{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3b30f865",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif'] = 'SimHei' # 使图像汉字显现\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "data = pd.read_csv(\"abnormal_orders.txt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "0c990507",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>order_id</th>\n",
       "      <th>order_date</th>\n",
       "      <th>order_time</th>\n",
       "      <th>cat</th>\n",
       "      <th>attribution</th>\n",
       "      <th>pro_id</th>\n",
       "      <th>pro_brand</th>\n",
       "      <th>total_money</th>\n",
       "      <th>total_quantity</th>\n",
       "      <th>order_source</th>\n",
       "      <th>pay_type</th>\n",
       "      <th>user_id</th>\n",
       "      <th>city</th>\n",
       "      <th>abnormal_label</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4277880103</td>\n",
       "      <td>2013-10-17</td>\n",
       "      <td>13:09:16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GO</td>\n",
       "      <td>8000001215</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000</td>\n",
       "      <td>游戏站点</td>\n",
       "      <td>当当支付</td>\n",
       "      <td>murongchun</td>\n",
       "      <td>北京市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4283851335</td>\n",
       "      <td>2013-09-23</td>\n",
       "      <td>14:09:49</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4277700101</td>\n",
       "      <td>2013-08-27</td>\n",
       "      <td>14:26:38</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GO</td>\n",
       "      <td>7000000960</td>\n",
       "      <td>国之美艺术品</td>\n",
       "      <td>8000.0</td>\n",
       "      <td>160</td>\n",
       "      <td>do.site_id</td>\n",
       "      <td>在线支付</td>\n",
       "      <td>1391175862</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4276537082</td>\n",
       "      <td>2013-09-11</td>\n",
       "      <td>14:16:47</td>\n",
       "      <td>电视冰箱洗衣机空调</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-3be293b</td>\n",
       "      <td>泉州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4281111595</td>\n",
       "      <td>2013-04-10</td>\n",
       "      <td>10:44:46</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     order_id  order_date order_time        cat attribution      pro_id  \\\n",
       "0  4277880103  2013-10-17   13:09:16        NaN          GO  8000001215   \n",
       "1  4283851335  2013-09-23   14:09:49     手机摄影数码         POP  8002042497   \n",
       "2  4277700101  2013-08-27   14:26:38        NaN          GO  7000000960   \n",
       "3  4276537082  2013-09-11   14:16:47  电视冰箱洗衣机空调         POP  8001992420   \n",
       "4  4281111595  2013-04-10   10:44:46       家具建材         POP  8002199518   \n",
       "\n",
       "  pro_brand  total_money  total_quantity order_source pay_type     user_id  \\\n",
       "0       NaN       1000.0            1000         游戏站点     当当支付  murongchun   \n",
       "1        三星     766000.0             200           主站     合并支付   dakehu_zy   \n",
       "2    国之美艺术品       8000.0             160   do.site_id     在线支付  1391175862   \n",
       "3        樱花      19900.0             100           主站     合并支付  qq-3be293b   \n",
       "4      纬度空间        100.0             100           主站     合并支付  nonscorpio   \n",
       "\n",
       "  city  abnormal_label  \n",
       "0  北京市               0  \n",
       "1  上海市               1  \n",
       "2  NaN               1  \n",
       "3  泉州市               1  \n",
       "4  广州市               1  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "c6758d22",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['order_id', 'order_date', 'order_time', 'cat', 'attribution', 'pro_id',\n",
       "       'pro_brand', 'total_money', 'total_quantity', 'order_source',\n",
       "       'pay_type', 'user_id', 'city', 'abnormal_label'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1320461f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(134190, 14)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f595f06f",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.columns =[\"订单ID\" ,\"下单日期\",\"下单时间\",\"商品一级类别\",\n",
    "            \"商品所属渠道\",\"商品ID\",\"品牌\",\"订单金额\",\"商品销售数量\",\"订单渠道\",\"支付方式\",\"下单用户ID\",\"城市\",\"异常\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "44b23004",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['订单ID',\n",
       " '下单日期',\n",
       " '下单时间',\n",
       " '商品一级类别',\n",
       " '商品所属渠道',\n",
       " '商品ID',\n",
       " '品牌',\n",
       " '订单金额',\n",
       " '商品销售数量',\n",
       " '订单渠道',\n",
       " '支付方式',\n",
       " '下单用户ID',\n",
       " '城市',\n",
       " '异常']"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "39850721",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单日期</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4277880103</td>\n",
       "      <td>2013-10-17</td>\n",
       "      <td>13:09:16</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GO</td>\n",
       "      <td>8000001215</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>1000</td>\n",
       "      <td>游戏站点</td>\n",
       "      <td>当当支付</td>\n",
       "      <td>murongchun</td>\n",
       "      <td>北京市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4283851335</td>\n",
       "      <td>2013-09-23</td>\n",
       "      <td>14:09:49</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4277700101</td>\n",
       "      <td>2013-08-27</td>\n",
       "      <td>14:26:38</td>\n",
       "      <td>NaN</td>\n",
       "      <td>GO</td>\n",
       "      <td>7000000960</td>\n",
       "      <td>国之美艺术品</td>\n",
       "      <td>8000.0</td>\n",
       "      <td>160</td>\n",
       "      <td>do.site_id</td>\n",
       "      <td>在线支付</td>\n",
       "      <td>1391175862</td>\n",
       "      <td>NaN</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4276537082</td>\n",
       "      <td>2013-09-11</td>\n",
       "      <td>14:16:47</td>\n",
       "      <td>电视冰箱洗衣机空调</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-3be293b</td>\n",
       "      <td>泉州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4281111595</td>\n",
       "      <td>2013-04-10</td>\n",
       "      <td>10:44:46</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         订单ID        下单日期      下单时间     商品一级类别 商品所属渠道        商品ID      品牌  \\\n",
       "0  4277880103  2013-10-17  13:09:16        NaN     GO  8000001215     NaN   \n",
       "1  4283851335  2013-09-23  14:09:49     手机摄影数码    POP  8002042497      三星   \n",
       "2  4277700101  2013-08-27  14:26:38        NaN     GO  7000000960  国之美艺术品   \n",
       "3  4276537082  2013-09-11  14:16:47  电视冰箱洗衣机空调    POP  8001992420      樱花   \n",
       "4  4281111595  2013-04-10  10:44:46       家具建材    POP  8002199518    纬度空间   \n",
       "\n",
       "       订单金额  商品销售数量        订单渠道  支付方式      下单用户ID   城市  异常  \n",
       "0    1000.0    1000        游戏站点  当当支付  murongchun  北京市   0  \n",
       "1  766000.0     200          主站  合并支付   dakehu_zy  上海市   1  \n",
       "2    8000.0     160  do.site_id  在线支付  1391175862  NaN   1  \n",
       "3   19900.0     100          主站  合并支付  qq-3be293b  泉州市   1  \n",
       "4     100.0     100          主站  合并支付  nonscorpio  广州市   1  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "789cadde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    105733\n",
       "1     28457\n",
       "Name: 异常, dtype: int64"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['异常'].value_counts()#1 异常 0正常"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "eebbb858",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.2120649824875177"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(data['异常']==1).sum()/data.shape[0]#样本不均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "0de0817d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2013-10-31    690\n",
       "2013-03-21    429\n",
       "2013-11-01    426\n",
       "2013-01-24    422\n",
       "2013-03-23    416\n",
       "             ... \n",
       "2013-07-31     17\n",
       "2013-08-31     14\n",
       "2013-01-31      2\n",
       "2013-03-31      2\n",
       "2013-05-31      2\n",
       "Name: 下单日期, Length: 364, dtype: int64"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['下单日期'].value_counts()#全年订单的抽样数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "461d4de8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "19212"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['订单ID'].duplicated().sum()#duplicated()是否于前面出现过的的相同   结果不为零说明有重复订单"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4a4d78e6",
   "metadata": {},
   "source": [
    "可能数据样本中存在大量重复订单，需要删除\n",
    "可能每条数据样本不是订单，而是订单中的一个商品或一笔交易，不能直接删除 。此时的标签可能代表交易异常，而非订单异常"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "0ecb4266",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "手机摄影数码       20612\n",
       "生活电器厨卫电器     19281\n",
       "家纺寝居         18679\n",
       "电脑办公打印文仪     11405\n",
       "家居日用         10642\n",
       "电视冰箱洗衣机空调     9067\n",
       "美妆个护          9043\n",
       "汽车用品          6490\n",
       "家具建材          4941\n",
       "食品酒水          4669\n",
       "健康医疗          4252\n",
       "服饰鞋帽          4067\n",
       "运动户外          3934\n",
       "母婴用品玩具        2664\n",
       "箱包奢品          1962\n",
       "钟表首饰           860\n",
       "图书音像           232\n",
       "Name: 商品一级类别, dtype: int64"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['商品一级类别'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "30d92949",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "GO     91170\n",
       "POP    43020\n",
       "Name: 商品所属渠道, dtype: int64"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['商品所属渠道'].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4cd12da2",
   "metadata": {},
   "source": [
    "POP（Platform Open Plan）：平台开放计划，货物来自第三方商家的供应商\n",
    "GO：推测为自营渠道。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "7ed9a9cc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6794097920858484"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(data['商品所属渠道']=='GO').sum()/data.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "cc6bc7d8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "主站            96894\n",
       "抢购            16256\n",
       "手机站点           7098\n",
       "团购             6294\n",
       "手机抢购           3095\n",
       "do.site_id     2394\n",
       "手机团购           1074\n",
       "充值              703\n",
       "当当              377\n",
       "游戏站点              5\n",
       "Name: 订单渠道, dtype: int64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['订单渠道'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "2075e81f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "合并支付    104274\n",
       "货到付款     26785\n",
       "当当支付      2511\n",
       "在线支付       421\n",
       "账户余额       199\n",
       "Name: 支付方式, dtype: int64"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['支付方式'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "1d9867be",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "北京市        14554\n",
       "上海市         6637\n",
       "广州市         6033\n",
       "深圳市         5468\n",
       "天津市         3393\n",
       "           ...  \n",
       "果洛州            1\n",
       "昌都地区           1\n",
       "四川省其他城市        1\n",
       "江西省其他城市        1\n",
       "神农架林区          1\n",
       "Name: 城市, Length: 365, dtype: int64"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['城市'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8d4b1402",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 134190 entries, 0 to 134189\n",
      "Data columns (total 14 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   订单ID    134190 non-null  int64  \n",
      " 1   下单日期    134190 non-null  object \n",
      " 2   下单时间    134190 non-null  object \n",
      " 3   商品一级类别  132800 non-null  object \n",
      " 4   商品所属渠道  134190 non-null  object \n",
      " 5   商品ID    134190 non-null  int64  \n",
      " 6   品牌      133418 non-null  object \n",
      " 7   订单金额    134189 non-null  float64\n",
      " 8   商品销售数量  134190 non-null  int64  \n",
      " 9   订单渠道    134190 non-null  object \n",
      " 10  支付方式    134190 non-null  object \n",
      " 11  下单用户ID  134190 non-null  object \n",
      " 12  城市      134188 non-null  object \n",
      " 13  异常      134190 non-null  int64  \n",
      "dtypes: float64(1), int64(4), object(9)\n",
      "memory usage: 14.3+ MB\n"
     ]
    }
   ],
   "source": [
    "data.info()#查看缺失值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "fea01507",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "订单ID         0\n",
       "下单日期         0\n",
       "下单时间         0\n",
       "商品一级类别    1390\n",
       "商品所属渠道       0\n",
       "商品ID         0\n",
       "品牌         772\n",
       "订单金额         1\n",
       "商品销售数量       0\n",
       "订单渠道         0\n",
       "支付方式         0\n",
       "下单用户ID       0\n",
       "城市           2\n",
       "异常           0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "37306212",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "订单ID      0.000000\n",
       "下单日期      0.000000\n",
       "下单时间      0.000000\n",
       "商品一级类别    1.035845\n",
       "商品所属渠道    0.000000\n",
       "商品ID      0.000000\n",
       "品牌        0.575304\n",
       "订单金额      0.000745\n",
       "商品销售数量    0.000000\n",
       "订单渠道      0.000000\n",
       "支付方式      0.000000\n",
       "下单用户ID    0.000000\n",
       "城市        0.001490\n",
       "异常        0.000000\n",
       "dtype: float64"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.isnull().sum()*100/data.shape[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "c48184f5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "缺少商品一级类别的样本中的异常样本占比为:11.727%\n",
      "缺少品牌的样本中的异常样本占比为:20.984%\n"
     ]
    }
   ],
   "source": [
    "#缺失且异常，占缺失样本的比例\n",
    "for i in [ '商品一级类别' , '品牌' ] :\n",
    "    ratio = 100*data.loc[data[i].isnull( ) , '异常' ].sum() / data[i].isnull().sum()\n",
    "    print(\"缺少{}的样本中的异常样本占比为:{:.3f}%\".format(i,ratio))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9356d3e6",
   "metadata": {},
   "source": [
    "信息缺失与标签异常之间的关系不大"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "e301615d",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "全部交易异常样本中，缺少商品一级类别的异常样本占比为:0.573%\n",
      "全部交易异常样本中，缺少品牌的异常样本占比为:0.569%\n"
     ]
    }
   ],
   "source": [
    "#缺失且异常，占异常样本的比例\n",
    "for i in [ '商品一级类别' , '品牌' ] :\n",
    "    ratio = 100*data.loc[data[i].isnull( ) , '异常' ].sum() / (data['异常']==1).sum()\n",
    "    print(\"全部交易异常样本中，缺少{}的异常样本占比为:{:.3f}%\".format(i,ratio))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4b5a27d7",
   "metadata": {},
   "source": [
    "占比不高，全部删除对异常样本数量影响不大，所以直接删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "555f5876",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.dropna(how='any',inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "e0f96ce8",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 132761 entries, 1 to 134189\n",
      "Data columns (total 14 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   订单ID    132761 non-null  int64  \n",
      " 1   下单日期    132761 non-null  object \n",
      " 2   下单时间    132761 non-null  object \n",
      " 3   商品一级类别  132761 non-null  object \n",
      " 4   商品所属渠道  132761 non-null  object \n",
      " 5   商品ID    132761 non-null  int64  \n",
      " 6   品牌      132761 non-null  object \n",
      " 7   订单金额    132761 non-null  float64\n",
      " 8   商品销售数量  132761 non-null  int64  \n",
      " 9   订单渠道    132761 non-null  object \n",
      " 10  支付方式    132761 non-null  object \n",
      " 11  下单用户ID  132761 non-null  object \n",
      " 12  城市      132761 non-null  object \n",
      " 13  异常      132761 non-null  int64  \n",
      "dtypes: float64(1), int64(4), object(9)\n",
      "memory usage: 15.2+ MB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "d614eb0e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#整理索引 index\n",
    "data.index=range(data.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c92cdba6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 132761 entries, 0 to 132760\n",
      "Data columns (total 14 columns):\n",
      " #   Column  Non-Null Count   Dtype  \n",
      "---  ------  --------------   -----  \n",
      " 0   订单ID    132761 non-null  int64  \n",
      " 1   下单日期    132761 non-null  object \n",
      " 2   下单时间    132761 non-null  object \n",
      " 3   商品一级类别  132761 non-null  object \n",
      " 4   商品所属渠道  132761 non-null  object \n",
      " 5   商品ID    132761 non-null  int64  \n",
      " 6   品牌      132761 non-null  object \n",
      " 7   订单金额    132761 non-null  float64\n",
      " 8   商品销售数量  132761 non-null  int64  \n",
      " 9   订单渠道    132761 non-null  object \n",
      " 10  支付方式    132761 non-null  object \n",
      " 11  下单用户ID  132761 non-null  object \n",
      " 12  城市      132761 non-null  object \n",
      " 13  异常      132761 non-null  int64  \n",
      "dtypes: float64(1), int64(4), object(9)\n",
      "memory usage: 14.2+ MB\n"
     ]
    }
   ],
   "source": [
    "data.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "4560b81e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "28284"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(data['异常']==1).sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f91bedc",
   "metadata": {},
   "source": [
    "# 重复ID的处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "2d5d65dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import sklearn\n",
    "from sklearn.ensemble import VotingClassifier#投票算法\n",
    "from sklearn.ensemble import GradientBoostingClassifier as GBC\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "%matplotlib inline\n",
    "plt.rcParams [ \"font.sans-serif\"]=[ \"Simhei\" ]\n",
    "plt.rcParams[ \"axes.unicode_minus\" ]=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "35fbc0d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "18554"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['订单ID'].duplicated().sum()#重复的两个值后者会显示为True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "0b6c3656",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "8"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.duplicated().sum()#八个全部特征都重复的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "93bae601",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop_duplicates(inplace=True)#将完全重复的删除"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "1fdf75d6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4279118253    32\n",
       "4269390206    23\n",
       "4271884108    20\n",
       "4275856215    20\n",
       "4265415474    19\n",
       "              ..\n",
       "4146667708     1\n",
       "4146667654     1\n",
       "4146661886     1\n",
       "4146657953     1\n",
       "4285770056     1\n",
       "Name: 订单ID, Length: 114207, dtype: int64"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['订单ID'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "7dc481e8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单日期</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>95213</th>\n",
       "      <td>4279118253</td>\n",
       "      <td>2013-07-23</td>\n",
       "      <td>23:22:21</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000147804</td>\n",
       "      <td>西门子</td>\n",
       "      <td>10.6</td>\n",
       "      <td>1</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>cxh0111</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95214</th>\n",
       "      <td>4279118253</td>\n",
       "      <td>2013-11-08</td>\n",
       "      <td>23:22:21</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000147804</td>\n",
       "      <td>西门子</td>\n",
       "      <td>10.6</td>\n",
       "      <td>1</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>cxh0111</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95215</th>\n",
       "      <td>4279118253</td>\n",
       "      <td>2013-01-26</td>\n",
       "      <td>23:22:21</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000147606</td>\n",
       "      <td>西门子</td>\n",
       "      <td>20.6</td>\n",
       "      <td>1</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>cxh0111</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95216</th>\n",
       "      <td>4279118253</td>\n",
       "      <td>2013-02-03</td>\n",
       "      <td>23:22:21</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000147606</td>\n",
       "      <td>西门子</td>\n",
       "      <td>20.6</td>\n",
       "      <td>1</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>cxh0111</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>95217</th>\n",
       "      <td>4279118253</td>\n",
       "      <td>2013-07-06</td>\n",
       "      <td>23:22:21</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000147606</td>\n",
       "      <td>西门子</td>\n",
       "      <td>20.6</td>\n",
       "      <td>1</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>cxh0111</td>\n",
       "      <td>湛江市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             订单ID        下单日期      下单时间 商品一级类别 商品所属渠道        商品ID   品牌  订单金额  \\\n",
       "95213  4279118253  2013-07-23  23:22:21   家具建材     GO  1000147804  西门子  10.6   \n",
       "95214  4279118253  2013-11-08  23:22:21   家具建材     GO  1000147804  西门子  10.6   \n",
       "95215  4279118253  2013-01-26  23:22:21   家具建材     GO  1000147606  西门子  20.6   \n",
       "95216  4279118253  2013-02-03  23:22:21   家具建材     GO  1000147606  西门子  20.6   \n",
       "95217  4279118253  2013-07-06  23:22:21   家具建材     GO  1000147606  西门子  20.6   \n",
       "\n",
       "       商品销售数量 订单渠道  支付方式   下单用户ID   城市  异常  \n",
       "95213       1   主站  合并支付  cxh0111  湛江市   0  \n",
       "95214       1   主站  合并支付  cxh0111  湛江市   0  \n",
       "95215       1   主站  合并支付  cxh0111  湛江市   0  \n",
       "95216       1   主站  合并支付  cxh0111  湛江市   0  \n",
       "95217       1   主站  合并支付  cxh0111  湛江市   0  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['订单ID']==4279118253].head()#下单时间和下单对象相同，订单ID相同"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "edc917fe",
   "metadata": {},
   "outputs": [],
   "source": [
    "Dup0rder = data ['订单ID'].value_counts() .index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "7a469a7c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4279118253  :  0\n",
      "4269390206  :  0\n",
      "4271884108  :  20\n",
      "4275856215  :  20\n",
      "4265415474  :  0\n",
      "4279551124  :  0\n",
      "4283874398  :  0\n",
      "4283873538  :  0\n",
      "4283874524  :  0\n",
      "4283339603  :  0\n",
      "4283874688  :  0\n",
      "4283874209  :  0\n",
      "4283873946  :  0\n",
      "4283339890  :  0\n",
      "4283339774  :  0\n"
     ]
    }
   ],
   "source": [
    "for i in Dup0rder[ :15]:\n",
    "    Ab0rders = (data.loc[data['订单ID'] == i, '异常'] == 1).sum()\n",
    "    print(i,\" : \" ,Ab0rders)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "9dfec3a3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单日期</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>3980</th>\n",
       "      <td>4271884108</td>\n",
       "      <td>2013-04-30</td>\n",
       "      <td>09:41:31</td>\n",
       "      <td>服饰鞋帽</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002089657</td>\n",
       "      <td>PPZ</td>\n",
       "      <td>178.0</td>\n",
       "      <td>2</td>\n",
       "      <td>手机站点</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>gome_taozx</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3981</th>\n",
       "      <td>4271884108</td>\n",
       "      <td>2013-10-09</td>\n",
       "      <td>09:41:31</td>\n",
       "      <td>服饰鞋帽</td>\n",
       "      <td>POP</td>\n",
       "      <td>8000345913</td>\n",
       "      <td>漫路</td>\n",
       "      <td>176.0</td>\n",
       "      <td>2</td>\n",
       "      <td>手机站点</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>gome_taozx</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15817</th>\n",
       "      <td>4271884108</td>\n",
       "      <td>2013-09-06</td>\n",
       "      <td>09:41:31</td>\n",
       "      <td>服饰鞋帽</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002287340</td>\n",
       "      <td>jstfe</td>\n",
       "      <td>49.0</td>\n",
       "      <td>1</td>\n",
       "      <td>手机站点</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>gome_taozx</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15818</th>\n",
       "      <td>4271884108</td>\n",
       "      <td>2013-09-30</td>\n",
       "      <td>09:41:31</td>\n",
       "      <td>服饰鞋帽</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002287341</td>\n",
       "      <td>jstfe</td>\n",
       "      <td>49.0</td>\n",
       "      <td>1</td>\n",
       "      <td>手机站点</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>gome_taozx</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15819</th>\n",
       "      <td>4271884108</td>\n",
       "      <td>2013-09-16</td>\n",
       "      <td>09:41:31</td>\n",
       "      <td>服饰鞋帽</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002206973</td>\n",
       "      <td>梵利玛</td>\n",
       "      <td>109.0</td>\n",
       "      <td>1</td>\n",
       "      <td>手机站点</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>gome_taozx</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "             订单ID        下单日期      下单时间 商品一级类别 商品所属渠道        商品ID     品牌  \\\n",
       "3980   4271884108  2013-04-30  09:41:31   服饰鞋帽    POP  8002089657    PPZ   \n",
       "3981   4271884108  2013-10-09  09:41:31   服饰鞋帽    POP  8000345913     漫路   \n",
       "15817  4271884108  2013-09-06  09:41:31   服饰鞋帽    POP  8002287340  jstfe   \n",
       "15818  4271884108  2013-09-30  09:41:31   服饰鞋帽    POP  8002287341  jstfe   \n",
       "15819  4271884108  2013-09-16  09:41:31   服饰鞋帽    POP  8002206973    梵利玛   \n",
       "\n",
       "        订单金额  商品销售数量  订单渠道  支付方式      下单用户ID   城市  异常  \n",
       "3980   178.0       2  手机站点  合并支付  gome_taozx  广州市   1  \n",
       "3981   176.0       2  手机站点  合并支付  gome_taozx  广州市   1  \n",
       "15817   49.0       1  手机站点  合并支付  gome_taozx  广州市   1  \n",
       "15818   49.0       1  手机站点  合并支付  gome_taozx  广州市   1  \n",
       "15819  109.0       1  手机站点  合并支付  gome_taozx  广州市   1  "
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data[data['订单ID']==4271884108].head()#订单ID不同 异常订单与下单时间是否伪造无关"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae6c75e7",
   "metadata": {},
   "source": [
    "部分数据为伪造数据  但异常订单全部为真实订单"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "98b51fad",
   "metadata": {},
   "source": [
    "剔除下单时间"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "0bf8f3de",
   "metadata": {},
   "outputs": [],
   "source": [
    "data2=data.drop(columns='下单日期')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "2248ff9a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1471"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2.duplicated().sum()#找到除下单日期外都相同的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "f1f72229",
   "metadata": {},
   "outputs": [],
   "source": [
    "#将重复值的伪造样本删除\n",
    "data.drop(index=data[data2.duplicated()].index,inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "3a659db8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "4269390206    23\n",
       "4271884108    20\n",
       "4275856215    20\n",
       "4265415474    19\n",
       "4283874688    18\n",
       "              ..\n",
       "4144311846     1\n",
       "4283495517     1\n",
       "4283496150     1\n",
       "4144240046     1\n",
       "4285770056     1\n",
       "Name: 订单ID, Length: 114207, dtype: int64"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['订单ID'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "112c0c99",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.index=range(data.shape[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "68628c5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "28284"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(data['异常']==1).sum()#删除重复伪造数据和异常订单数目与原来的相同 说明异常订单中没有伪造的"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f74402e9",
   "metadata": {},
   "source": [
    "如果同一个ID下的有异常样本，那么其他样本为异常的可能性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "8d5cc36d",
   "metadata": {},
   "outputs": [],
   "source": [
    "label_1 = data.loc[data[\"异常\"]==1,\"订单ID\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "867b31ba",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame( )\n",
    "for idx,i in enumerate(label_1.index):\n",
    "    ratio = label_1[i]/data[data[\"订单ID\"] == i].shape[0]\n",
    "    df.loc[idx, \"订单ID\"] = i\n",
    "    df.loc[idx, \"该ID下交易异常样本占所有样本的比例\"]= ratio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "be262c76",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.0    25102\n",
       "0.5        5\n",
       "Name: 该ID下交易异常样本占所有样本的比例, dtype: int64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df['该ID下交易异常样本占所有样本的比例'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "86a04c5f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10    11651\n",
       "06    11201\n",
       "09    11124\n",
       "03    11113\n",
       "07    11011\n",
       "01    10959\n",
       "04    10912\n",
       "05    10888\n",
       "12    10842\n",
       "08    10837\n",
       "11    10723\n",
       "02    10021\n",
       "Name: 下单日期, dtype: int64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#月份的分布\n",
    "OrderMonth = data[\"下单日期\"].apply(lambda x: x[5:7])\n",
    "OrderMonth.value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f8c9d3a7",
   "metadata": {},
   "source": [
    "订单时间分布十分均匀，可以认为日期可能是捏造的可以忽视"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "5421594f",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.drop(columns='下单日期',inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "92ac9bcb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(131282, 13)"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0134ada2",
   "metadata": {},
   "source": [
    "# 异常值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "99935dd6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>131282.000000</td>\n",
       "      <td>131282.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>667.187834</td>\n",
       "      <td>1.188975</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>2930.730828</td>\n",
       "      <td>1.684653</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>0.500000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>29.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>98.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>379.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>766000.000000</td>\n",
       "      <td>200.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                订单金额         商品销售数量\n",
       "count  131282.000000  131282.000000\n",
       "mean      667.187834       1.188975\n",
       "std      2930.730828       1.684653\n",
       "min         0.500000       1.000000\n",
       "25%        29.000000       1.000000\n",
       "50%        98.000000       1.000000\n",
       "75%       379.000000       1.000000\n",
       "max    766000.000000     200.000000"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[:,['订单金额','商品销售数量']].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "38be2093",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 800x640 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "plt.figure(figsize=(10,8), dpi=80)\n",
    "sns.kdeplot(data.loc[:,\"订单金额\"],shade=True)\n",
    "#plt.xlim(-1, 10000)调整x范围\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "9ad6d21d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 800x640 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8),dpi=80)\n",
    "sns. kdeplot(data . loc[ : ,\"商品销售数量\"],shade=True)\n",
    "#plt.xlim(-1, 50)#调整x范围\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "da409bc1",
   "metadata": {},
   "source": [
    "查找特征异常样本"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "b7c5a2d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "NumOfSamples = data.shape[0]\n",
    "DataNoAbnormal = data.copy()\n",
    "BoxAbnormalIdx = []#列表:用于保存特征异常的样本的索引\n",
    "for idx, column in enumerate([\"订单金额\",\"商品销售数量\"]):\n",
    "    feature = data.loc[ : ,column]\n",
    "    QL = np.quantile(feature,0.25)\n",
    "    QU = np.quantile(feature,0.75)\n",
    "    IQR = QU- QL\n",
    "    error = feature[ ((feature <(QL -1.5*IQR)) . astype(int)+ (feature > (QU+ 1.5*IQR) ).astype(int)) != 0]\n",
    "    BoxAbnormalIdx. extend(error .index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "f271caac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "31266"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(BoxAbnormalIdx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "5d721f47",
   "metadata": {},
   "outputs": [],
   "source": [
    "BoxAbnormalIdx=set(BoxAbnormalIdx)#使用set类型来去重"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "8d52b699",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "29949"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(BoxAbnormalIdx)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "ba832edd",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\20835\\AppData\\Local\\Temp\\ipykernel_26052\\3954402678.py:1: FutureWarning: Passing a set as an indexer is deprecated and will raise in a future version. Use a list instead.\n",
      "  (data.loc[BoxAbnormalIdx,'异常']==1).sum()\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "7368"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(data.loc[BoxAbnormalIdx,'异常']==1).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "4bad1cf9",
   "metadata": {},
   "outputs": [],
   "source": [
    "df=pd.DataFrame(index=data.index)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "6c649c3f",
   "metadata": {},
   "outputs": [],
   "source": [
    "df['特征异常']=0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "id": "ff71d94d",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\20835\\AppData\\Local\\Temp\\ipykernel_26052\\3935158108.py:1: FutureWarning: Passing a set as an indexer is deprecated and will raise in a future version. Use a list instead.\n",
      "  df.loc[BoxAbnormalIdx,'特征异常']=1\n"
     ]
    }
   ],
   "source": [
    "df.loc[BoxAbnormalIdx,'特征异常']=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "id": "37500687",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>特征异常</th>\n",
       "      <th>异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>特征异常</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.040428</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>异常</th>\n",
       "      <td>0.040428</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          特征异常        异常\n",
       "特征异常  1.000000  0.040428\n",
       "异常    0.040428  1.000000"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "pd.concat([df[\"特征异常\"],data[\"异常\"]],axis=1) .corr()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2433af54",
   "metadata": {},
   "source": [
    "是否含有异常特征和是否为异常数据无关"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "id": "2a82b973",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4283851335</td>\n",
       "      <td>14:09:49</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4276537082</td>\n",
       "      <td>14:16:47</td>\n",
       "      <td>电视冰箱洗衣机空调</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-3be293b</td>\n",
       "      <td>泉州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4281111595</td>\n",
       "      <td>10:44:46</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3977175284</td>\n",
       "      <td>23:26:19</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002237611</td>\n",
       "      <td>伊斯贝</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>swt6263122</td>\n",
       "      <td>宁德市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4106833871</td>\n",
       "      <td>16:47:34</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         订单ID      下单时间     商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量  \\\n",
       "0  4283851335  14:09:49     手机摄影数码    POP  8002042497    三星  766000.0     200   \n",
       "1  4276537082  14:16:47  电视冰箱洗衣机空调    POP  8001992420    樱花   19900.0     100   \n",
       "2  4281111595  10:44:46       家具建材    POP  8002199518  纬度空间     100.0     100   \n",
       "3  3977175284  23:26:19     手机摄影数码    POP  8002237611   伊斯贝     990.0     100   \n",
       "4  4106833871  16:47:34       家居日用    POP  8002212182  品道天元    8800.0     100   \n",
       "\n",
       "  订单渠道  支付方式      下单用户ID   城市  异常  \n",
       "0   主站  合并支付   dakehu_zy  上海市   1  \n",
       "1   主站  合并支付  qq-3be293b  泉州市   1  \n",
       "2   主站  合并支付  nonscorpio  广州市   1  \n",
       "3   主站  合并支付  swt6263122  宁德市   0  \n",
       "4   主站  合并支付  qq-edf69d7  深圳市   0  "
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "bf906ebe",
   "metadata": {},
   "outputs": [],
   "source": [
    "data.to_csv('abnormal_orders2.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3583b790",
   "metadata": {},
   "source": [
    "# 特征工程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "a33c99af",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.rcParams['font.sans-serif'] = 'SimHei' # 使图像汉字显现\n",
    "plt.rcParams['axes.unicode_minus'] = False\n",
    "data = pd.read_csv(\"abnormal_orders2.csv\",index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "1dea300c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['订单ID', '下单时间', '商品一级类别', '商品所属渠道', '商品ID', '品牌', '订单金额', '商品销售数量',\n",
       "       '订单渠道', '支付方式', '下单用户ID', '城市', '异常'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c4f43ac5",
   "metadata": {},
   "source": [
    "# 建立banchmark"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "26364588",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import OrdinalEncoder\n",
    "from sklearn.model_selection import cross_val_score #帮助我们进行实际交叉验证计算\n",
    "from sklearn.model_selection import KFold #确定交叉验证的具体方式\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "61e69971",
   "metadata": {},
   "outputs": [],
   "source": [
    "oe = OrdinalEncoder()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "98258396",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = data.iloc[ : ,:-1]\n",
    "y = data.iloc[ :,-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c4cafc64",
   "metadata": {},
   "outputs": [],
   "source": [
    "X[\"下单时间\"]= X[\"下单时间\"].apply(lambda x:x[:2])#时间变成小时"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "09847870",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4283851335</td>\n",
       "      <td>14</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4276537082</td>\n",
       "      <td>14</td>\n",
       "      <td>电视冰箱洗衣机空调</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-3be293b</td>\n",
       "      <td>泉州市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4281111595</td>\n",
       "      <td>10</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3977175284</td>\n",
       "      <td>23</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002237611</td>\n",
       "      <td>伊斯贝</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>swt6263122</td>\n",
       "      <td>宁德市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4106833871</td>\n",
       "      <td>16</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         订单ID 下单时间     商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0  4283851335   14     手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1  4276537082   14  电视冰箱洗衣机空调    POP  8001992420    樱花   19900.0     100   主站   \n",
       "2  4281111595   10       家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "3  3977175284   23     手机摄影数码    POP  8002237611   伊斯贝     990.0     100   主站   \n",
       "4  4106833871   16       家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  \n",
       "0  合并支付   dakehu_zy  上海市  \n",
       "1  合并支付  qq-3be293b  泉州市  \n",
       "2  合并支付  nonscorpio  广州市  \n",
       "3  合并支付  swt6263122  宁德市  \n",
       "4  合并支付  qq-edf69d7  深圳市  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "87e2efa2",
   "metadata": {},
   "outputs": [],
   "source": [
    "X = pd. DataFrame (oe.fit_transform(X))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "baf5a8c3",
   "metadata": {},
   "outputs": [],
   "source": [
    "X.columns = data.iloc[ : , :-1].columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "dbf2bf59",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>99753.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15907.0</td>\n",
       "      <td>227.0</td>\n",
       "      <td>3009.0</td>\n",
       "      <td>41.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>24870.0</td>\n",
       "      <td>5.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>56307.0</td>\n",
       "      <td>14.0</td>\n",
       "      <td>11.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15431.0</td>\n",
       "      <td>1551.0</td>\n",
       "      <td>2970.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>50713.0</td>\n",
       "      <td>207.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>81338.0</td>\n",
       "      <td>10.0</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18402.0</td>\n",
       "      <td>2049.0</td>\n",
       "      <td>621.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>46259.0</td>\n",
       "      <td>133.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7028.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>19080.0</td>\n",
       "      <td>377.0</td>\n",
       "      <td>1499.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>62154.0</td>\n",
       "      <td>101.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11982.0</td>\n",
       "      <td>16.0</td>\n",
       "      <td>3.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>18580.0</td>\n",
       "      <td>748.0</td>\n",
       "      <td>2799.0</td>\n",
       "      <td>40.0</td>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>56469.0</td>\n",
       "      <td>223.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "      订单ID  下单时间  商品一级类别  商品所属渠道     商品ID      品牌    订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0  99753.0  14.0     5.0     1.0  15907.0   227.0  3009.0    41.0   1.0   0.0   \n",
       "1  56307.0  14.0    11.0     1.0  15431.0  1551.0  2970.0    40.0   1.0   0.0   \n",
       "2  81338.0  10.0     2.0     1.0  18402.0  2049.0   621.0    40.0   1.0   0.0   \n",
       "3   7028.0  23.0     5.0     1.0  19080.0   377.0  1499.0    40.0   1.0   0.0   \n",
       "4  11982.0  16.0     3.0     1.0  18580.0   748.0  2799.0    40.0   1.0   0.0   \n",
       "\n",
       "    下单用户ID     城市  \n",
       "0  24870.0    5.0  \n",
       "1  50713.0  207.0  \n",
       "2  46259.0  133.0  \n",
       "3  62154.0  101.0  \n",
       "4  56469.0  223.0  "
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "e84a04f3",
   "metadata": {},
   "outputs": [],
   "source": [
    "cv = KFold(n_splits=5 ,shuffle=True ,random_state=1412)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "4cccd28e",
   "metadata": {},
   "outputs": [],
   "source": [
    "clf = RFC(n_estimators=200,random_state=1412)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "1c55f489",
   "metadata": {},
   "outputs": [],
   "source": [
    "acc = cross_val_score(clf,X,y ,cv=cv)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "9a0ea648",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.83135926, 0.82903607, 0.83379037, 0.83062919, 0.83040067])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "9986a09f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8310431109436079"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "977c5626",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.4519355730563564e-06"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "acc.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "73813ea6",
   "metadata": {},
   "outputs": [],
   "source": [
    "auc = cross_val_score(clf,X,y,cv=cv,scoring=\"roc_auc\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "5a99b294",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8589196852471133"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "b30d2873",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.7681487240840121e-06"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "auc.var()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f2baeab",
   "metadata": {},
   "source": [
    "## 分割训练集和测试机"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "09edb276",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.1495092244783596"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.groupby(\"订单ID\").count().mean()[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "90a9d876",
   "metadata": {},
   "outputs": [],
   "source": [
    "orderid = data[\"订单ID\"]. unique()#取出所有订单的ID 通过ID进行分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "7a70d4a0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "114207"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(orderid)#一共有11.4is个订单"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "2a403209",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([4283851335, 4276537082, 4281111595, ..., 4285765029, 4285770012,\n",
       "       4285770056], dtype=int64)"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "orderid"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "6e4eaba8",
   "metadata": {},
   "outputs": [],
   "source": [
    "import random\n",
    "random.seed(1412)\n",
    "test_id=random.sample(orderid.tolist(),int(len(orderid)*0.3))#选ID作为测试集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "293a836c",
   "metadata": {},
   "outputs": [],
   "source": [
    "train_id = orderid.copy ().tolist()\n",
    "for i in test_id:\n",
    "    train_id.remove(i)#移除测试ID剩余的便是训练ID"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "dcf5194e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "79945"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "b3998074",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "34262"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(test_id)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "53b564f0",
   "metadata": {},
   "source": [
    "通过ID进行分成训练和测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8504ac18",
   "metadata": {},
   "outputs": [],
   "source": [
    "data['分割']='train'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c7de863c",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in test_id:\n",
    "    data.loc[data[\"订单ID\"]==i,\"分割\"]= \"test\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "2b8c79cc",
   "metadata": {},
   "outputs": [],
   "source": [
    "train=data.loc[data[\"分割\"]==\"train\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "f31f2d54",
   "metadata": {},
   "outputs": [],
   "source": [
    "test=data.loc[data[\"分割\"]==\"test\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "345e2c86",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(91868, 14)"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "5e2f47c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(39414, 14)"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "a0a0f8e4",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\20835\\AppData\\Local\\Temp\\ipykernel_26784\\4098208276.py:4: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  i.drop(columns=\"分割\",inplace=True)\n",
      "C:\\Users\\20835\\AppData\\Local\\Temp\\ipykernel_26784\\4098208276.py:4: SettingWithCopyWarning: \n",
      "A value is trying to be set on a copy of a slice from a DataFrame\n",
      "\n",
      "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
      "  i.drop(columns=\"分割\",inplace=True)\n"
     ]
    }
   ],
   "source": [
    "#恢复索引并删除特征\n",
    "for i in [train,test]:\n",
    "    i .index = range(i.shape[0])\n",
    "    i.drop(columns=\"分割\",inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "42ce46e7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(91868, 13)"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "2ceeece4",
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain = train.iloc[ :,:-1]\n",
    "Xtest = test.iloc[ :,:-1]\n",
    "Ytrain = train.iloc[ :,-1]\n",
    "Ytest = test.iloc[ : ,-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "6c6bfb7d",
   "metadata": {},
   "outputs": [],
   "source": [
    "train = pd.concat( [Ytrain,Xtrain], axis=1)#将标签提前 为增加新特征做准备\n",
    "test =pd.concat([Ytest,Xtest] , axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "fb104cb4",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train_bf.csv')\n",
    "test.to_csv(r'test_bf.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3fd40aab",
   "metadata": {},
   "source": [
    "# 异常和正常下单时间的区别"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "9fd0a5be",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import sklearn\n",
    "from sklearn.ensemble import VotingClassifier#投票算法\n",
    "from sklearn.ensemble import GradientBoostingClassifier as GBC\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "%matplotlib inline\n",
    "plt.rcParams [ \"font.sans-serif\"]=[ \"Simhei\" ]\n",
    "plt.rcParams[ \"axes.unicode_minus\" ]=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "2ba1239e",
   "metadata": {},
   "outputs": [],
   "source": [
    "train = pd.read_csv(r\"train_bf.csv\",index_col=0)\n",
    "test = pd.read_csv(r\"test_bf.csv\",index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "ec93b6aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>14:09:49</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>10:44:46</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>16:47:34</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>21:15:59</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>16:49:49</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID      下单时间    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  \\\n",
       "0   1  4283851335  14:09:49    手机摄影数码    POP  8002042497    三星  766000.0   \n",
       "1   1  4281111595  10:44:46      家具建材    POP  8002199518  纬度空间     100.0   \n",
       "2   0  4106833871  16:47:34      家居日用    POP  8002212182  品道天元    8800.0   \n",
       "3   0  4253622967  21:15:59  电脑办公打印文仪    POP  8001748897  清华同方     880.0   \n",
       "4   0  4276159555  16:49:49      家居日用     GO  1000341307  乐扣乐扣    4900.0   \n",
       "\n",
       "   商品销售数量 订单渠道  支付方式      下单用户ID   城市  \n",
       "0     200   主站  合并支付   dakehu_zy  上海市  \n",
       "1     100   主站  合并支付  nonscorpio  广州市  \n",
       "2     100   主站  合并支付  qq-edf69d7  深圳市  \n",
       "3     100   主站  合并支付  benson2570  宿迁市  \n",
       "4     100   主站  合并支付   dakehu_zy  西安市  "
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "4cfe325f",
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import datetime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "9ee05fdf",
   "metadata": {},
   "outputs": [],
   "source": [
    "Hour = train.loc[ : ,\"下单时间\"].apply( lambda x: int(x[ :2]))#提取时间的小时部分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "a82d45d0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        14\n",
       "1        10\n",
       "2        16\n",
       "3        21\n",
       "4        16\n",
       "         ..\n",
       "91863    23\n",
       "91864    23\n",
       "91865    23\n",
       "91866    23\n",
       "91867    23\n",
       "Name: 下单时间, Length: 91868, dtype: int64"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Hour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "ac49a5c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "#计算每个区间内的交易中正常和异常订单数量\n",
    "OrderTime_ab = Hour[train[\"异常\"]== 1].value_counts()\n",
    "OrderTime_normal = Hour[train[\"异常\"]== 0].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "aae65139",
   "metadata": {},
   "outputs": [],
   "source": [
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "5e9d2da0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABM0AAAMDCAYAAACxb+KyAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAAB8HElEQVR4nOzdeZicVZn38W/SgRAJEgKoEUZBxRuM8oIMjCLIPi4okAFRQdw3RBZxRVFwQR0UFBTG5VVRcQOFIOCC4DoKiICO8sI9xIU1LDEkZCNLd94/ztN08dBbVapTvXw/11VXVT3nPKfuLjHV9evznDNp7dq1SJIkSZIkSeozudMFSJIkSZIkSaONoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTVTOl2AJElSJ0XE5sA7gI9k5qph9H8fcG1m/mLEixtFImJn4MXAZZn5p07XI0mSNNImrV27ttM1SJIkdUREPBn4FfBk4AfAyzOze5D+jwXuAaYBfwaOzMw/t7Ge7YHHAUuB1cAaoNVf1u7PzH+2oaYNgP8HPK069M3MfPW6jjvAa00GnjgCQy/OzCUjMK4kSRrHnGkmSZImsjuBWyih2aHAp4ATB+n/KkpgBiU8+3/NvFhEdAHvBp4HHJyZPbUubwWOb2bMAdwIHNCGccjM1RHxS/pCs8Mj4sTMXNCO8Ws2Be4YgXHfAXx2BMaVJEnjmGuaSZKkCauaVfZy4O7q0Dsi4nn99Y2IKcA7q6f/BI4abFbaAC4EPgG8BHh/P+09wHLg/qqmO4DbhrjdXRvjGmDfdswya3B2w+OpwOvaOHajZWNsXEmSNI55eaYkSRr3ImI6ZRbTQ8AqyqWP3UB3ZvZExKuBU4C3Z+aPBxjjLcAXqqevzsxvRsQkoKu6bQBsCEzLzLsGGGM34DdVv25g/8z85TDq3xzYNjP/UDs+DbgYeEF16NfAS0biUsSIuBp4TvX0fzMz2v0a1et0U/6w+y3KzLtW7Qn8qHr8qsz81rrWJkmSJhYvz5QkSRPBIcA3+2uIeET286Pa84F8IyK+MUDbP4Et+mvIzN9HxLsoM7e6gG9HxE6Zed9ALxQRTwR+BmwXEe/LzDOr49OAy4B9q65XAHMyc/lwfoAWfJUSmt1EeZ8eM0KvtZoym21NZi5tdZCIWNHwdM06VyVJkiYcQzNJkqT1KDM/FxEvBl4IzALOo+xKOZDZwL9QZrKdERH/BrwNuIC+wOw84M2ZuXo4NUTEicCzgIXVbTiXL25MWRfstur5m4cIGLuAx1Jm+M0A5mfmScN4nTWU0GzTamOEVj2p4XGzl9FKkiQZmkmSpAnhh8BTKJdnrqZcotlNWUOsm7JD5b7AT6r+u1DWFuv1CcpstauAY6tjkyiXET6bspNm7yWaw/n96s3AzcD/MPjGA2TmzyJi96q2rYDDgQMpIRbAhzPz1GG8ZqPdKGu5rU/XNtn/kOomSZLUEYZmkiRp3MvMB4EHASLiqcDXgI9l5hW9faq1tHr9b+OlgRGxuHq4NDNvbji+EfALyg6cHxzO+mRVPXdExMuAn2fmymH0/0tE7ANcDWxOCcx6gGMz89zhvGZNDyVA7L0NWUMLuiizzKZTAkZJkqQxxdBMkiRNGBExlbI+2LbA+dV6YvXdJ5vxSsr6ZXsAbwR+OdwT+9twICIuAuYMc4jJwDkRcc4A7T/IzMMGeO0jBho0ImZQLsP8wEAbGvRzzolAT2Z+tp+2yZTwbMPhjNXg65n52ibPaXzdvSmBpiRJUksmd7oASZKk9aWa1XUE5ZLMLYGvtDpWRGwI9K7RdS99l22ui1VtGKPXsNY3axQRGwDfB14D/E9EHDpE/8kRcRZwBvCZiLgwIh7b2CczezLzgcy8d5hlbNBs3cPgTDdJktQ0Z5pJkqQJJTOviYjPAScAL4yIN2Xml1sY6nhgu+rxOzLzgTaU1xt0/Qb4937anw/8tHr8b5Q10equAPakydAsIrqAbwH7VYdmAidGxOWZ+dAAp21OWdOt12HAThHxisy8vpnXb9BV3U+JiOktjgEwreHx1HUYR5IkTVCGZpIkaSL6CPB64AHgn82eXM3IOqF6emVmfmeI/s8GXkvZXGAVZYfIHuDXmfnrhq69QVdPf0FVRDTORFs1QJ+e3vahf5KHz9kA+CbwsobDc4EjBgnMyMz7q8sgPwB8iBJ4PQ34XUS8HzgzM9c2UcdU+kKzI6tbO0wbuoskSdIjGZpJkqRxq1qofyZlsfveHTPXUDYFOAr4ZbVJQFMyc3VE7EbZVfOT1Syt3tsUyvpdGwH3ZGY3ZefO/i7ffD/QX2jWDsMaKyI2B34A7NVw+HPACZnZ0/9Zfaqf7yMR8Qvgu8ATKT//p4H9I+I1mXnfMGveeOguLVmXGWuSJGmCMjSTJEnj2XMYYjH4iOjv8JIBjh8cEfWZU0cNMvws4B5KYHcXsIQS4D2LErAtr/XvDan26ud16m4coMZeQ840i4hdgO8BT214/Xf2t6D/EOO8GbgA2IkSnO1bNb2Qsjbaqxt3Kh1IZi6kYf2xiNgZ+C1lptifgb2rPpIkSSPO0EySJGmEZeYPgR/2Po+IRZQdJeuXPg45s6sJA4ZuEbEJ8DHg7fRtDLWMcjnmDyNiW+DjwGWZ+a3BXqTqey5wCmWdtxdQdt88purSRQsbHETEjsBPKIHZVcDL2rRunCRJ0rAYmkmSpPHsWsoaWw9Vt5XVbdjrbDVpCiUkmgZsAtw/RP81tee9odl1wKv76b8b8PXq8Rzgln76fAPYdYjX3QzYkb7AbD7wksy8ISL2pWwm0AU8MyK+PcS6ZO+o+j6REpxdkplvj4j5wNGU2WHzhqjnEapdO79GeQ+hbE6wcIiZdcMxLzO3G7qbJEmSoZkkSRrHMnMF8Nf1+JK9IdgyYMEw+nfXnveGU8sz81GBWEQ8oeHpPwboU7/k81Ey8/aI2I8SsD2TEpjdWTX/N3AvJQR7JnAQcEl/40TEdsBbGn6W12fm6uo1TouI/2rmcsrq5/s07dsAoO7eERpXkiSNQ4ZmkiRpQomILYAtRmDofwy20+QwjdQMuEfJzJ6IeA2wUWYuazi+KiI+BXymOvTxiLisWvC/7kzKov8An8rM62qvMazALCIeA5wIvJe+Rfu/TtmhtPE9/TTlss8e4HnAHxvaTqdvs4VDgJ9Wj7uARZTfe+8ZTj2SJElgaCZJkiaeo4GPjMC4O/PIEKcVvb+bPSYitu+n/UkNj7eJiP5CuscM98WqIGxZP03nUtY7eyrwDOCNwBcbO0TEa4GXVE9vAD403NdtGOPJwFuBNwBbVocXA2/PzPNrfQ8C3lY9PSszr2loe1w1BsB1mXlJQ9uT6HtfnWkmSZKGzdBMkiRNNE0vSj9M/YVPzeqq7ncFbh6i78VteL1+VbPN3gnMrQ59spptdhdARDwd+FzV1ruBwOoWXmoacBh9gdlPgTdl5h2NnSLi+ZRdOSdR1ql7X22cT9AXFp5Sa3tyw+P5LdQoSZImKEMzSZI00TSGO89tnLHUrIg4lb6QZuW6FFUZNb+bZeYlEXEBcDgwA/hKRLwYmAlcSt9llG/KzGzxNW6JiBdSdhb9SGZ+r94nIl4JfBXYCPhf4KDMXNXQvgfwuurpLzLzx7UhGkOzO5AkSRqmUfOLmSRJ0nrSyoyo9TVu7+9mv8rMveuNEbE38Ivq6c6Z+cd++lwF7NuGWqBcDrknMAt4AfB5YBfg6VX7WZn5nXV5gcz8KzC7fjwiZlLWVevdRfTPwIsy876GPjOA8ykz0B6ib1OCRo2h2e3rUqskSZpYDM0kSdJE0xhuPTkiFq3DWI0bCqwZsNfwdQ3dZUgz2jAGAJn5z4g4DPglsAFlPbhePwbe2a7X6hURG1HCug9QZrVBmdl2VGYubug3BfgOfaHYxzLz1n6G3KbhsaGZJEkaNkMzSZI00TSGZt9t47jt2Pmypd/NImI3yiYBu1E2JICyw2Q7XAtcBbyw4dgS4LUD7KjZkmpX0zdQdsx8QnV4KfD+zPxcrW8X5ZLN3pp+BnxygKF7Q7W1eHmmJElqwuROFyBJkrSejdRGAK14bO15qzPNjgQuBN5NuVQR4K5Wi+oVEQH8jkcGZgCbAL+OiLZcBhoRHwbupARfT6AEXN8DntFPYLYRJew8qjp0K/DyQQK83tDs3sa10CRJkobiTDNJkjTRTGp43M6NAIb1x8iIeBywYfX0PyNiaWZ+tXre6u9mHwLeSNlBcgXlssUvtDgWETELOB44jrLDJcDdwEeBY4FnAAFcFRFXAJ8CrsrMVmfbfZhyKebRlB07T8vMG/up66mUcLB3Nt084IWZ+cAgYz+puvfSTEmS1BRDM0mSNNG0Y92wlsaNiKcBP6UviNqIsivl6ymzrN5FCcCWDTDEdcCzqsfzeg9m5uKIOBJYDFyTmSuaLT4iJlEu73wjZRbX1IbmrwEnZuaiiDgP+AQlVJsE/Ht1+3tEfBe4DLi2mUs3M7MnIk4APp2Zt/VT2zRKgHcKfe/dtcBLM/P+QX6mPSjvMRiaSZKkJk1au7Ydy29IkiSNDRHxRuDL1dNXAH9ah+HeDhxTPd46Mwe8JDIidgUuB7asDq2hBG2NM98WAD8B/puyW+StwILhzOCqQq/HApsDjwP+BXgqsB1wdP3SxGpdsKcCOwEvAl5cndfoWuCkzPxF7TgR8RzKzLP9+ylnKfB74AbgJuCvwO39BWJD/ExPBF5HeY9nVYdXU0K7j2Xm6oa+G1DWcduQ8h48FziD8j4AfDIzT2rm9SVJ0sTmTDNJkjTRbNDwuJ0bAWw4UENEvBi4ANi4OvRJ4GRgU+BgyiWPO1N243xVdeu1JiL+SbnscjUlGJpE+T1uA8qMsMdUYzcGcL0uagzMImIn4OuUyyun9tMf4EbglMy8dKCfqbqs9YCIeB7wQeAA+i5RnQ7sW916/QA4bKDxGuoLYG/gJZQwr3EG30+Bd2fmn/s5dWfgGvp/D3ool3VKkiQNm6GZJEmaaKYN3aV940bEFMqaXb2B2eUNM54WUi59/FoVPh1JmfH15IYhpgCPX4e6ftb4JDP/GBH3AjvW+i2jBHtfyczfDnfwqu8LI2Ir4JWUn2GnWrcVlMs5BxURM4CzKZd79uoBfgx8KjN/NUgdv4+Ii4BDa00rgXdk5g1Dvb4kSVIjQzNJkjTRNIZb7dwIoN/QLDPXVLtM/gh4JvCmAfr9FvhtNe4sYBfgaZSF7J8AzKDsWrkxZYbYhpSZZl30XeY5ibLz5FpK2NRD/5efnkGZGXYfJVT7CXBJZi4Z5o/eX/13AZ8GPh0R2wJ7AXsAewK/HuzS1YYxFkXESyiXp06jzE77Zmb+bZhlfBHYB/g75ef+DXBZZi5o9ueRJElyTTNJkqT1ICI2BZ4/2CWP67GWyZTZYDeuw46XTb1eZvY00X9qZq4cyZokSZKGYmgmSZIkSZIk1UweuoskSZIkSZI0sRiaSZIkSZIkSTXjfiOAiFhEWSx3fodLkSRJkiRJUmfNAlZm5oyhOo770AyY2tXVtdGsWbO27XQhkiRJkiRJ6pz58+fT3d09rL4TITSbP2vWrG2vuuqqTtchSZIkSZKkDtpvv/248847h3U1omuaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1UzpdAGSJEmSJEkjZfGqbpau6el0GQ+bPmUym27Y1ekyNAyGZpIkSZIkadxauqaHc25ZxIKV3Z0uhS2mdnHM9jMMzcYIQzNJkiRJkjSuLVjZzT0rOh+aaWxxTTNJkiRJkiSpZp1mmkXElUBXZu7TcGw34GxgNnA18IbMvKOhfTpwFjAHWAiclJkX1sY9CjgFmAlcAJyQmQ+tS62SJEmSJEnScLU80ywiXg3sBRzbcGwb4ApgCXAYcBdweURs0HDq+cAhwHHAacB5EfHchjHmAN8ALgeOAHYGPtNqnZIkSZIkSVKzWpppFhFbAGcA52TmXxqa3gMsBw7OzOXVTLR5lJDswojYFTgYmJOZc6uxtgVOBg6sxjgNuCQzj6/a5wE3R8SpmXlvK/VKkiRJkqT2cDdKTRStXp55BtBDuYSy0X7ARZm5HCAzuyPiUmB/4MLqfjFwacM5c4F3RUQX8DhgB+BDvY2ZOS8ibgb2Bb7TYr2SJEmSJKkN3I1SE0XToVlE7AW8GrgWOCci7gE+l5m3AVsBf6qdcht9s8i2Am7KzO5a+7Sq7XHVsf7G2K7ZWiVJkiRJUvu5G6UmglbWNPt0db8FsCXwFuCPEbEjJfxaVOu/ourHIO1UfaZVjwcbQ5IkSZIkSRpRTYVmEbEL8K/AJcB2mfkCICih1ieAlUA9al5FXxg2UDtVn5XV48HGkCRJkiRJkkZUszPNnl7dn56ZawEy827gh5RdLu8Dtq6dMxNYVj0eqJ2qz33V48HGkCRJkiRJkkZUs6HZ0ur+b7XjKyizwa4B9qi17QLcXT2+BpgdETNq7VR9bgfmN44REZOAZzeMIUmSJEmSJI2oZkOz6yi7Zu7ce6AKtfaiBGLfB14aEbOrtm2Ag4Erq+5XUWaMndhw7nHAXzLz3szsAS4Cjo2IjatzXgE8vmEMSZIkSZIkaUQ1tXtmZt4TEV8DvhQR7wPuAV4PPIuyIcCNwA3AryLiMuAFlEsuv1ydvzoiTgY+X20csCWwOzCn4WVOpwRl10XE9cDhwCWZeX3rP6YkSZIkSZI0fK3snvlW4P8CHwYuA3YCDs3M6zJzDXAA8BVgR+DnwO6Z+WDvyZl5LnAosBllwf+DMnNuQ/vtlEs2bwRmA2cAr2yhTkmSJEmSJKklTc00A6iCsQ9Xt/7alwPvrW4DjXExcPEg7bcBRzZbmyRJkiRJY83iVd0sXdPT6TIAmD5lMptu2NXpMqRRoenQTJIkSZIktc/SNT2cc8siFqzs7mgdW0zt4pjtZxiaSRVDM0mSJEmSOmzBym7uWdHZ0EzSI7WyppkkSZIkSZI0rhmaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTVTOl2AJEmSJEmS+ixe1c3SNT2dLgOA6VMms+mGXZ0uoyMMzSRJkiRJkkaRpWt6OOeWRSxY2d3ROraY2sUx288wNJMkSZIkSdLosGBlN/es6GxoNtG5ppkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUM6WZzhFxEHBJP03TMvOhiNgNOBuYDVwNvCEz72g4fzpwFjAHWAiclJkX1l7jKOAUYCZwAXBCZj7UTJ2SJEmSJEnSumh2ptmzgd8Cu9ZuKyNiG+AKYAlwGHAXcHlEbNBw/vnAIcBxwGnAeRHx3N7GiJgDfAO4HDgC2Bn4TLM/lCRJkiRJkrQumpppRgnNrs7MP9QbIuI9wHLg4MxcHhFXAvMoIdmFEbErcDAwJzPnVudsC5wMHFgNcxpwSWYeX7XPA26OiFMz895mfzhJkiRJkiSpFc3ONNsFuG6Atv2AizJzOUBmdgOXAvtX7fsDi6tjveYC+0REV0TMAnagzEajGmMecDOwb5N1SpIkSZIkSS0b9kyzKtR6InBiRPxfYA1wGfDuahbYVsCfaqfdRt8ssq2Am6owrbF9WtX2uOpYf2NsN9w6JUmSJEmSpHXVzEyz3ar764BDgXcCBwDfr45PAxbVzlkBbDlEO1WfadXjwcaQJEmSJEmSRlwza5r9GtgpMx+eCRYRdwJXRMSzgJVAd+2cVfSFYQO1U/VZWT0ebAxJkiRJkiRpxA07NMvMB4AHaod/U93vBNwHbF1rnwksqx7fBzynn3aqPr1jbw0srPW5dbh1SpIkSZIkSetq2JdnRsTTI2J27fDm1f1GwDXAHrX2XYC7q8fXALMjYkatnarP7cD8xjEiYhJlx867kSRJkiRJktaTZtY0ewdwdu3Ya6r7ayhrm720N1iLiG2Ag4Erqz5XUWaUnVi1TwKOA/6SmfdmZg9wEXBsRGxcnfMK4PENY0iSJEmSJEkjrpk1zb4AXBsRXwd+SZkB9jbgwsz8c0TcDNwA/CoiLgNeQLkk88sAmbk6Ik4GPh8RO1IW998dmNPwGqdTgrLrIuJ64HDgksy8fh1+RkmSJEmSJKkpw55pVm0AcAiwMyVAeyHwLuCVVfsaym6aXwF2BH4O7J6ZDzaMcS5l583NKAv+H5SZcxvab6dcsnkjMBs4o3d8SZIkSZIkaX1pZqYZmfkT4CeDtC8H3lvdBupzMXDxIO23AUc2U5ckSZIkSZLUTs2saSZJkiRJkiRNCIZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVGJpJkiRJkiRJNYZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVTOl0AZIkSePF4lXdLF3T0+kyHjZ9ymQ23bCr02VIkiSNSYZmkiRJbbJ0TQ/n3LKIBSu7O10KW0zt4pjtZxiaSZIktcjQTJIkjVqjaebWcGdtLVjZzT0rOh+aSZIkad0YmkmSpFFrtMzcctaWJEnSxGNoJkmSRjVnbkmSJKkT3D1TkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQa1zSTJEnSmDEWd1SVJEljk6GZJEmSxgx3VJUkSeuLoZkkSZLGFHdUlSRJ64NrmkmSJEmSJEk1hmaSJEmSJElSjaGZJEmSJEmSVGNoJkmSJEmSJNUYmkmSJEmSJEk1hmaSJEmSJElSjaGZJEmSJEmSVGNoJkmSJEmSJNUYmkmSJEmSJEk1hmaSJEmSJElSjaGZJEmSJEmSVDOl0wVIkiRJ49XiVd0sXdPT6TIeNn3KZDbdsKvTZUiSNCYYmkmSJEkjZOmaHs65ZRELVnZ3uhS2mNrFMdvPMDSTJGmYDM0kSZKkEbRgZTf3rOh8aCZJkprTcmgWEV3AtcBlmXlqdWw34GxgNnA18IbMvKPhnOnAWcAcYCFwUmZeWBv3KOAUYCZwAXBCZj7Uap2SJEmSJElSs9ZlI4D3ALv0PomIbYArgCXAYcBdwOURsUHDOecDhwDHAacB50XEcxvGmAN8A7gcOALYGfjMOtQoSZIkSZIkNa2lmWYRsQNlNtiShsPvAZYDB2fm8oi4EphHCckujIhdgYOBOZk5txpnW+Bk4MBqjNOASzLz+Kp9HnBzRJyamfe2UqskSZL65yL1kiRJA2s6NIuIycBXgQuBf2lo2g+4KDOXA2Rmd0RcCuxf9d0fWAxc2nDOXOBd1aWejwN2AD7U25iZ8yLiZmBf4DvN1ipJkqSBuUi9JEnSwFqZafYO4MnAi4GLG45vBfyp1vc2+maRbQXclJndtfZpVdvjqmP9jbFdC3VKkiRpCC5SL0mS1L+m1jSLiKcBHwHelJkP1JqnAYtqx1YAWw7RTtVnWvV4sDEkSZIkSZKkETfs0CwiJgFfAb6XmZf302UlUP8z5Sr6wrCB2qn6rKweDzaGJEmSJEmSNOKamWl2DPAUyuWZ/bkP2Lp2bCawbIh2qj73VY8HG0OSJEmSJEkacc2EZodRAq1FEbE2ItYCewGnVI+vAfaonbMLcHf1+BpgdkTMqLVT9bkdmN84RjW77dkNY0iSJEmSJEkjrpnQ7I3AzrXb9cAXq8cXAS+NiNkAEbENcDBwZXX+VZQZYydW7ZOA44C/ZOa9mdlTjXFsRGxcnfMK4PENY0iSJEmSJEkjbti7Z2bmvPqxiFgK3JOZf4yIvwDHA7+KiMuAF1Auufxydf7qiDgZ+HxE7EhZ3H93YE7DkKdTgrLrIuJ64HDgksy8vqWfTpIkSZIkSWpBU7tnDiYz1wAHUDYL2BH4ObB7Zj7Y0Odc4FBgM8qC/wdl5tyG9tspl2zeCMwGzgBe2a4aJUmSJEmSpOEY9kyz/mTm3rXny4H3VreBzrkYuHiQ9tuAI9elLkmSJEmtWbyqm6VrejpdBgDTp0xm0w27Ol2GJGmCWqfQTJIkSdL4snRND+fcsogFK7s7WscWU7s4ZvsZhmaSpI4xNJMkSZL0CAtWdnPPis6GZpIkdZqhmSRJkqQxazRdTgpeUipJ44mhmSRJkqQxa7RcTgpeUipJ442hmSRJkqQxzctJJUkjYXKnC5AkSZIkSZJGG0MzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJq3AhAkiRJkjRuLF7VzdI1PZ0u42HTp0x2R1VpjDI0kyRJkiSNG0vX9HDOLYtYsLLzO6puMbWLY7afYWgmjVGGZpIkSZKkcWXBym7uWdH50EzS2OaaZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUM6XTBUiSpPVj8apulq7p6XQZD5s+ZTKbbtjV6TIkSZKkfhmaSZI0QSxd08M5tyxiwcruTpfCFlO7OGb7GYZmkiRJGrUMzSRJmkAWrOzmnhWdD80kSZKk0c41zSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqpnSykkRsSvwOmAL4Abg7MxcXrXtBpwNzAauBt6QmXc0nDsdOAuYAywETsrMC2vjHwWcAswELgBOyMyHWqlVkiRJkiRJalbTM80iYh/g18AmwN+BE4ArImJSRGwDXAEsAQ4D7gIuj4gNGoY4HzgEOA44DTgvIp7bMP4c4BvA5cARwM7AZ5qtU5IkSZIkSWpVUzPNImIS8F/AJzLzI9Wxyygh2s7AG4HlwMGZuTwirgTmUUKyC6sZagcDczJzbnX+tsDJwIHVy5wGXJKZx1ft84CbI+LUzLx3HX5WSZIkSZIkaVianWk2DTgT+GzDsTsb2vYDLuq9VDMzu4FLgf2rPvsDi6tjveYC+0REV0TMAnagzEajGmMecDOwb5O1SpIkSZIkSS1paqZZFYZ9qfd5REwG3g3cAVwHbAX8qXbabfTNItsKuKkK0xrbp1Vtj6uO9TfGds3UKkmSJEmSJLWq5d0zI+LNlBlgLwNenJmrKOHXolrXFcCW1eOB2qn6TKseDzaGJEmSJEmSNKJaDs2Am4CfA9OBo6tjK4HuWr/eMG2wdqo+K6vHg40hSZIkSZIkjaiWQ7PM/G1mHg3MAd4WEXsB9wFb17rOBJZVjwdqp+pzX/V4sDEkSZIkSZKkEdVUaFYt1v+U2uGfUmaC7QBcA+xRa98FuLt6fA0wOyJm1Nqp+twOzG8co9qx89kNY0iSJEmSJEkjqqmNAICnAP8bEbtl5nXVsW2BDYF/AN8HvhkRszPzpojYBjgY+EDV9yrKjLETgQ9VgdhxwF8y816AiLgIODYivp6Zy4BXAI8HrmzxZ5QkSZKkUWHxqm6WrunpdBkPmz5lMptu2NXpMiRpVGp298xbI+JS4KKIeB+wAPgo8EfK+mY9wA3AryLiMuAFlEsuv1ydvzoiTgY+HxE7Uhb3351yiWev0ylB2XURcT1wOHBJZl7f8k8pSZIkSaPA0jU9nHPLIhasrC/jvP5tMbWLY7afYWgmSQNodqYZwFGUYOszlMs7LwfeU+2eSUQcAJwCHEAJ0t6bmQ/2npyZ50bEfOAEyoL/B2XmpQ3tt0fELsDHgdnAGZRgTpIkSZLGvAUru7lnRedDM0nS4JoOzTJzMfCW6tZf+3LgvdVtoDEuBi4epP024Mhma5MkSZIkSZLaoeXdMyVJkiRJkqTxytBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSppundMyVJkiRJE8fiVd0sXdPT6TIAmD5lMptu2NXpMiRNEIZmkiRJkqQBLV3Twzm3LGLByu6O1rHF1C6O2X6GoZmk9cbQTJIkSZI0qAUru7lnRWdDM0la31zTTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqWZKM50jYgvg88CLgQ2B3wJvysy/Ve27AWcDs4GrgTdk5h0N508HzgLmAAuBkzLzwtprHAWcAswELgBOyMyHWvrpJEmSJEmSpBY0O9PsQmBP4FTgXcCzgEsAImIb4ApgCXAYcBdweURs0HD++cAhwHHAacB5EfHc3saImAN8A7gcOALYGfhMkzVKkiRJkiRJ62TYM80iYn/g34BnNswsewA4PyK2pwRhy4GDM3N5RFwJzKOEZBdGxK7AwcCczJxbnb8tcDJwYPUypwGXZObxVfs84OaIODUz713XH1aSJEmSJEkajmZmml0H7NobmFUWVPddwH7ARZm5HCAzu4FLgf2rPvsDi6tjveYC+0REV0TMAnagzEajGmMecDOwbxN1SpIkSZIkSetk2DPNMnMxJfRq9GLK2mS3AFsBf6q130bfLLKtgJuqMK2xfVrV9rjqWH9jbDfcOiVJkiRJkqR11fLumRHxL8CbgM9WQdg0YFGt2wpgy+rxQO1UfaZVjwcbQ5IkSZIkSRpxLYVmETEJ+ApwL30L9a8EumtdV9EXhg3UTtVnZfV4sDEkSZIkSZKkEdfqTLN3UNYZe3VmLq2O3QdsXes3E1g2RDtVn/uqx4ONIUmSJEmSJI24pkOziHg+8J/AhzLzNw1N1wB71LrvAtzd0D47ImbU2qn63A7MbxyjmtH27IYxJEmSJEmSpBHXVGgWETsAFwM/Aj5Ra/4+8NKImF313QY4GLiyar+KMmPsxKp9EnAc8JfMvDcze4CLgGMjYuPqnFcAj28YQ5IkSZIkSRpxw949MyI2AH5QPT0L2CUiepv/DswFbgB+FRGXAS+gXHL5ZYDMXB0RJwOfj4gdKYv77w7MaXiZ0ylB2XURcT1wOHBJZl7f0k8nSZIkSZIktaCZmWbPBHagrDF2FXBdw+2lmbkGOICyQcCOwM+B3TPzwd4BMvNc4FBgM8qC/wdl5tyG9tspl2zeCMwGzgBe2eLPJkmSJEmSJLVk2DPNMvNGYNIQfZYD761uA/W5mHKJ50DttwFHDreuiWrxqm6WrunpdBkATJ8ymU037Op0GZIkSZIkSW0z7NBMo8vSNT2cc8siFqzs7mgdW0zt4pjtZxiaSZIkSZKkccXQbAxbsLKbe1Z0NjSTJEmSJEkaj5raPVOSJEmSJEmaCAzNJEmSJEmSpBpDM0mSJEmSJKnGNc0kSWqROxlLkiRJ45ehmSRJLXInY0mSJGn8MjSTJGkduJOxJEmSND65ppkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUM6XVEyNiB+BaYMfM/EfD8d2As4HZwNXAGzLzjob26cBZwBxgIXBSZl5YG/so4BRgJnABcEJmPtRqrZIkSZIkSVIzWpppFhFbAz8ENqkd3wa4AlgCHAbcBVweERs0dDsfOAQ4DjgNOC8intswxhzgG8DlwBHAzsBnWqlTkiRJkiRJakXToVlEzKbMMPtnP83vAZYDB2fmT4E3UoK1Q6pzdwUOpsw+Oz8zvwacAZzcMMZpwCWZeXxm/gQ4EnhjRDy+2VolSZIkSZKkVrQy02xPStD1vn7a9gMuyszlAJnZDVwK7F+17w8sro71mgvsExFdETEL2IEyG41qjHnAzcC+LdQqSZIkSZIkNa2V0OxLmXnmAG1bAX+qHbsN2K6h/aYqTGtsn1a1bVUdG2wMSZIkSZIkaUQ1HZplZs8gzdOARbVjK4Ath2in6jOtejzYGJIkSZIkSdKIamkjgEGsBLprx1bRF4YN1E7VZ2X1eLAxJEmSJEmSpBHV7tDsPmDr2rGZwLIh2qn63Fc9HmwMSZIkSZIkaUS1OzS7BtijdmwX4O6G9tkRMaPWTtXndmB+4xgRMQl4dsMYkiRJkiRJ0ohqd2j2feClETEbICK2AQ4Grqzar6LMGDuxap8EHAf8JTPvrdZLuwg4NiI2rs55BfD4hjEkSZIkSZKkETWlzePNBW4AfhURlwEvoFxy+WWAzFwdEScDn4+IHSmL++8OzGkY43RKUHZdRFwPHA5ckpnXt7lWSZIkSZIkqV9tnWmWmWuAA4CvADsCPwd2z8wHG/qcCxwKbEZZ8P+gzJzb0H475ZLNG4HZwBnAK9tZpyRJkiRJkjSYlmeaZeYvgUn9HF8OvLe6DXTuxcDFg7TfBhzZam2SJEmSJEnSumj3mmaSJEmSJEnSmNfuNc2kfi1e1c3SNT2dLgOA6VMms+mGXZ0uQ5IkSZIkjWKGZlovlq7p4ZxbFrFgZXdH69hiahfHbD/D0EySJEmSJA3K0EzrzYKV3dyzorOhmSRJkiRJ0nC4ppkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVLNlE4XII1Gi1d1s3RNT6fLeNj0KZPZdMOuTpchjSj/fydJkiRpNDE0k/qxdE0P59yyiAUruztdCltM7eKY7Wf45V3jnv+/kyRJkjSaGJpJA1iwspt7VnT+y7s0kfj/O0mSJEmjhWuaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1UzpdAGSpJGxeFU3S9f0dLoMAKZPmcymG3Z1ugxJkiRJGjZDM2mcMCBR3dI1PZxzyyIWrOzuaB1bTO3imO1n+N+EJEmSpDHF0EwaJwxI1J8FK7u5Z0Vn/5uQJEmSpLHI0EwaRwxIJEmSJElqDzcCkCRJkiRJkmpG7UyziHgXcDwwFfgicEpmjo4FmyRJkiRJkjSujcrQLCJOAP4TOBW4ATgLWFodkzQOjKaNC2B4mxeMpprdbEGSJEmSRtaoC80iYkPgFOBzmfnR6tgK4KKIOCMz13S0QEltMVo2LoDhb14wWmp2swVJkiRJGnmjLjQDdgFmAOc3HPsFMAnYFbi6AzVJGgFjceOCsVizJEmSJKl5o3EjgK2AtcCfew9k5lrgdmC7ThUlSZIkSZKkiWPS2rVrO13DI0TEUcAXMnPj2vHfA9/LzDOaHG9FV1fXRrNmzWpnmR3XvRYWr+6mp8P/802eBJtu0EXXpMH7WW/rxlrNY61eGHs1W+/IG2s1j7V6YezVPNbqheHVPNbqhdFT81irF8ZezWOtXvD/dyNtrNULY6/msVYv+P+7kTbceseS+fPn093d/VBmThuq72i8PHMl0N+1T6uAIX+g/sbr7u7mzjvvnL9uZWkgyztdQJPGWr0w9moea/XC2KvZekfeWKt5rNULY6/msVYvjL2arXfkjbWax1q9MPZqtt6RN9ZqHmv1wtir2Xo7bhYlexrSaAzN7gM2iYjHZuaDDcdnAsuaHSwzZ7SrMEmSJEmSJE0Mo3FNsxsps8r26D0QEZsATwfu7lRRkiRJkiRJmjhGXWiWmYuBnwHvjoiu6vDbKbtn/rxjhUmSJEmSJGnCGI2XZwKcAvw38LuIuAP4D+DszLy/s2VJkiRJkiRpIhh1M80AMvN6YDdgPrAN8F7gnZ2sSZIkSZIkSRPHpLVrR8Geq5IkSZIkSdIoMipnmkmSJEmSJEmdZGgmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmjaCImBwRUzpdhyRJnRARXX4OSpLGkla+w/l5N35NWrt2badrkMaViPg34CRgT2BmdfivwFeAMzNzZadqG68iYmfgauCezNymw+WMKxExCbgC2B/4DbB3ZvZ0tqqxLyL2BU4EZgOzgAXAPOAbwNczs7uD5Un9ioj/At4KbJuZ/xik3wuAdwG7AY8FeoD/B5wLfCEz/eVzAMN9jwc490DgUuDXmbl3+6sb+1p5fyNiKnA95d/rb2Xmq0auwrGviX8nDgWOBgLYErgXuBn4UmZetB5KHbMiYjIwOTPXdLqW8aSV73B+3k0MJqETTERsALwTeDXwVOCfwAXAKZm5uJO1jQcR8RrKP6xdwArgGsovAk8FPg68KCL2z8xVnatyfImI6cD3gKmdrmWcejslMFsGvM7AbN1FxFspv0xNqg71AFtVt72AV0TEwZm5okMljklNfFHbBPgA8DJga+Bu4OvAJ/yjxsAi4r2U93eoficDH62ePgj8DngS8EzKf/d7Aa8YoTLHtOG+xwOc+0TgPPr+XVHNOry/H6cEZvOBY9ta1DjTxL8TH6eEE73WUv6deBLwgoj4JvAaA4c+/QU6ETFUoOPn3TC18h3Oz7uJw8szJ5CI2BD4EfAJYAdgA8oMh+OBX1X/sKpFEfF/gC9R/rE9A3hcZj43M59G+UvaWsoH3bs6V+W4dC6wXaeLGI8iIoD/rJ6+JzP/2sl6xoOIeDpwNrAaeBOwOeXf4icB7wPWAAdQ/rihYWrii9oM4L+B9wJPobz32wCnAJdGRNfIVTl2RcSJlN8dhur3IsoXiG7Ke7xlZj6P8h5/rOr28og4YoRKHbOG+x4PcO5k4FvAFm0tahxp9f2NiL2AE6qnb8zMB9pZ13jSxL8T+1DCnwcoYc5jgQ0pv8t9uup2FHDkyFQ69lSBzm+Bg4FplEDnr/QFOj+rvuc1njMDP++GpZXvcH7eTSyGZhPL2ZQZI92U/9NPp/yCdT7wf2jxlzU97HTKh/7pmfmuzFza25CZXwB6p5o7rb9NIuK1lF+s/Etkm1VrMnyD8svZVcB/dbaiceOVlF9cv5iZ/zczF2ZmT2bekZn/CXyu6vfSzpU4tjT5Zfg7wI7AcuC1wEbAvwA/o4SV7xiBEsesiHhMRHyH8iXiziH6TgLOrJ4em5mn9/5FPjO7M/ODwB+qdj8HK828x4P4ELA3fhY+yrq8v9Ufk8+jfF/6Smb+qP0Vjn0tvMevru4/lpnfz8wlmbkmM+dl5ruBi6t2PwdZpz/K+3k3fE19h/PzbuIxNJsgImI2ZVYDwAcy84zMXJ6Z/wReDyTwtoh4RseKHMMiYmPKh9J1wEcG6HZddb/VeilqnKtmQX2e8svCGR0uZzx6P2V9hgeB13uJRNv0/v//1gHab6/up62HWsa0Zr+oVX8VfmH19PWZ+fXMXJWZd1JmOzwAfCQiZg44yMRzKuXSkmsp/x4M5l+Av1G+kH1hgD69XyL8HOxzKsN/jx8lIp4PnAyspC90V59Taf39PYsya+R2yhqU6t+pNPce+znYnKb/KO/n3fC1+B3Oz7sJxtBs4ngL5X/ve+lLxgHIzNWUWWiTgP9Y/6WNfZm5LDPnZOZumblsgG5PrO6XrK+6xqtqUd7vARtTpvJf3tmKxpeI2IXyJQzghMy8fbD+aspd1f2LB2h/SXV//XqoZaw7lea+qB1d3d+Ymd9rbKjW9Py/lC9pA/1vMxH1AB8E9sjMewbrmJm3Z+aBmfnvg4Tsfg4+2rDf47qI2Bz4NmUGyonAje0vb8xr6f2NiIOA11H+MPf6zHxwhOobD5p9jwf8HKzWXv736umE/xxchz/K+3k3TK18h/PzbuJxI4CJ4/nV/dwqJKvrnXL+Ivquw1abVOsGHFI9vbKDpYwXZ1IuKf4dZUbUHp0tZ/yo1sT4BuUSwr8Dm0XEmZQ1uH4PXOpGFuvkW8C7gRdWC9efSZkl9WTKmhj7URagPXPAEdSr94vaJzNzTZl8Oqg9q/sLBmj/EeV/mxdRli0QfHCA3xmaFhGPpVwSBH4ONlqX9/g8yhflCzLz3GrJAj1S0+9vFUZ+uXr6B2DXiHgpZUOc3wBXuCnOIzT7Hn+FsrTGmyPiXuBrwP2UXTQ/Sll3+X7KJYkTWhXizBmiW3/hjJ93bdLKdzg/78YfZ5pNHE+r7n/XX2O109iDwPbrq6AJ5nWUhb7XAp/tbCljW0TMAd5G2fn15W633XbvBXov034CZU2RoCzI+33gzxHxrx2qbczLzHmUX1L/Tlm4/n8pf0W+mbLmyM3Afpn5507VOIZ8MDM/Npx/AyJiS2BG9bTfz0Hgf6p7Pwcr7QrMKu+hzGxYwcCXs0w4rb7HEfEOyszUefQtv6GaFt/f04HHVY+fTvljRlCu2vgxcE1EPG2AcyecZt/jzPxvyiWC/6QsSv8PSiB5A3AgZZH752fm/PZWOv70F+j4edd2rXyH8/NunDE0mwAiYiPKZWxQvqAN5H5gZpWOq00iYhZ9OxB+NTP/2MFyxrSIeBLlL5RrgVdXazOoTSLiiZQdHKHsuPTkzNwnMw+k/MLwFmBb4BcR8cwOlTkePJayIG9/VlC2hdcQmvyitnnD434/BzNzIWVG5bbrUpceLSKeRZnVAPDxZi9D1CNVl9B/krKO2cu8dLB9ImJnypdkgB8AW2fmAZn5IsqMng8BuwK/qX6/U2tmUNbp6s9DuA7UcPUX6Ph51yatfIfz8258MjSbGKY2PF40SL/ebbT9JaBNqm3gzwdmUmaWvLOzFY1d1W6O3wE2oyyG6i5W7fc24DHAGuAVmXl/b0O1w+OXKOsfTgc+3JkSx7aI2Bu4hL5/Z28Ffk75SzvAs4ELIsL3t72G+zm4mHJJ8tRB+qgJEfEY4LuUL8jX0vcFRC2odnTsfT9P8A9xbfdOyhq/C4DX1BZdX5WZH6WEaU/g0bsVahgi4lXAV4FNKZfZ/xn4FdA7s2xv4GcR8fqOFDhGDBLo+HnXBq18h/PzbvwyNJsYuhserxikX+86Re5W0z4fBfal/NXs8GrxTbXmI8DuwG/pW6Re7bVPdX95Zt41QJ+51f2B1S8Uas5nKIt23wnsmZlPz8z9gKcAh1IuVwF4X0T4l/b26f0cXJuZDw3Sz8/B9vsy5ZLvf1LC+HZe8jkRfYGy5Mb3qp3z1F69n4PfGmRR8LnV/UtHvpzxpVrov3fH878AO2bmjpm5N2XG1Jsp31UmAf9ZhRCqGSLQ8fOuPVr5Dufn3TjlF56JoTEoG+z/vL2LmvoB1QYRcThlkXqAt2TmHwbrr4FFxH6UtbYWUD6EXMdsZGxZ3f9+kD73VvdT6VvzRcMQEU8GdqqeHlWt6wJAZq7NzIuAV1aHNgT2X78VjmvLq/uh/u3wc7CNIuI9wBGU9/3wav1UtaiaeXMEZYaq65iNjGY+B580wrWMR7tTfndYA/xHZt7U25CZazLzy8Dx1aEtKJfC6tEGC3T8vFtHrXyH8/NufHP3zAkgM7sjYjFlGvQTgbsH6LpZdT9pvRQ2jkXEcyi7WgF8IjO/0cFyxoOjKCH/FsAdg+yS9+SI6N36+XWZed56qG08WVS770/jmocD/RVe/eudOfYg5VKUR8nMn0XEg5T32Uvl22dhdb9BRGyRmQsG6OfnYJtUm7Z8onr69sz8eSfrGSdeXd1vBzw4yGfhXg2fhftk5i9HurBxZBElOFs0SJ/ez0E/A5vX+zl4c2beOkCfH9C3c6afgzXDCHT8vFsHrXyH8/Nu/HOm2cRxe3U/2IKPj6/ulw7SR0OIiGcAl1KmO38P+EBnKxoXVlMWPB7o1jiDsvdYN2pW7198B9tN6d+q+7syc8kg/fRovV+w1mTm2kH69f4C+8AgfdSEzFwE9P732u/nYERMp2/THD8H10FE7AV8i/J75umZ+cUOlzRerGLwz8LemSVrG471PHoYDaKZz8GbR7iW8aj3c3C4l635OdhgOIGOn3eta+U7nJ93E4MzzSaOPwDPAnYBLqw3Vltnb1E9vWM91jWuRMRsypbPWwC/pCwiO9iXYw1DZr6JQS5FqRZX/wVwW2Zus57KGo9+BLwWeE1EfDIzHzErtVqA+h3V00vXc23jwa2UL7UzI2Kr/taNq3bF26R6+t/1dq2TP1DWK9oFuK6f9udU90tcf7J11b/HvV86vk3fjrxaR5n574O1R8Rrga8Bv67WiFLzfkRZiP64iPhifV2zaq3JN1RP/RxsXm/Q+PSImJqZK/vp07uu3GoGv0x2Qmky0PHzrkmtfIfz827icKbZxPGz6v7wARbv7l0757ZqG2I1KSIeD1xF2VHpz8AhA/wyII1WPwBupFx6ckVE7BcRG0TElIjYF/g1ZQHqh4DTO1jnmJSZy4HvV0/fX2+vFjz+XPX0J41rvagtej8HXzFAe+/n4A3roZZxKSKeCVxG2WH3SuC1/uFIY8x/UZYxeTLw44j4t4iYHBEbRcTBwG8oi6/fX/VVEzLzf4FrKP9GHFdvj4gt6dtx8CuZ6UwzHg50rmL4gY6fd01o5Tucn3cTizPNJo5LKOszbAscDZzT2xARGwEnVk8vX++VjR/vou8S1x2AewdZb+TfM/PX66UqaZgysyciDqP8e/FMyi8Bvb8A9F4y2A0cmZl/70CJ48GxlJ2V3hYRu1J+sV0KbEPZPXNzyk5YbxhoALXsfMriyXtFxIGZ+fDnXfVFrXc2q5+DrTuFvkt+9gKWDPI5GJl523qpShqmzFwaEQdRdsjckxLw9PDIiQYrgIMz88H1X+G48GrK7xenR8QLKbuir6Ks1Xco5d+Q64F3d6zCUaQh0Hk8w/+jvJ93zWnlO5yfdxOIodkEkZnLI+IcylTez0bEFOCrlI0BzqF8UK2hb5aDmrdTw+MpDP7/L2d5alTKzL9FxL8BR1J2cnw6ZaerB4GrgU9m5m87WOKYlpkLqvf3jZQvB28GZlC+hP2NMnPhM874bb/MvCMivkv5b/u7EfFW4CJKiPllyuyRxZTPRrVmp4bHGwzR18WnNSpl5vUR8X+A1wAvo/zBeQvgn5RZPh91JnDrMvPW6v09GjiI8sekTSh/QLqJMiP785m5onNVjipNBzp+3jVtp4bHw/0O13iOn3fj3KS1a51FOFFExFTKXxT2G6DLezPTS64kSWNOw26B2w601XtEbEb50rtjP81rgSMy87sjUqAkSU2KiJ/RdznlUB7eLdfPO6l9DM0mmIjYgLKWzjuATavD84GTMvPrHStMkqT1oNo17DTK5SnTqsO3Aidk5o86VpgkSW3k553UHoZmE1S1jtkzKWsI/CUz3ZJckjRhVLvBPgN4MDNvHqq/JEljkZ930roxNJMkSZIkSZJqXIxckiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpZkqnC5AkSdKjRcQ0IKqnCzPz9g7WsjPwYuCyzPxTp+qQJElanwzNJEnShBERj6H9M+3XZuayFmt5UWb+YIAuTwVurB5/GXhzP2NsCrwfOC0zH2y2hmHUuAHw/4Cn9R4CXt3u16leazLwxBEYenFmLhmBcSVJ0jjn5ZmSJGki+R9gSZtvf222iIh4EvBj4IKIOGSAbisaHi8foM/RwHuAjIiXN1vHUDJzNfDLhkOHR8QW7X6dyqbAHSNwe8MI1StJksY5QzNJkjSRLB6BMe9q4ZyZwC6U38W+FRE79dNnZcPjh+qNEbEhcFz19HGUAG8knN3weCrwuhF6naZn63V4XEmSNM55eaYkSZpIeoOolZm50boMFBH/AJ4MNH1ZZGb+MSKOAOYCjwEuioh/zcyFDd26Gx6v6WeYtwKzqscfzswfNVvHMGv9c0RcAzynOvRG4FMj8DqrIqKHKkik/Hyt2hPofT8GmqUnSZI0KEMzSZI0kawegTFXDt3l0TLzhxHxVcrlg5sDzwJ+1dCle4DHRMQmwMnV02uA01qpoQlfpYRmNwE/iojHZOZIhFGrKbPZ1mTm0lYHiYjGS1v7CxwlSZKGZGgmSZImkrUjMGbPUB0iYjowvZ+mM4HnUxb5z4h4QkPb5g2PN661HQdsSQnTTgK2jAhqejLzvn5qOZES0C2sbsO5fHFj4LPAbdXzN/fzeo26gMdS1imbAczPzJOG8TprKKHZphGx/TD6D+RJDY+7B+wlSZI0CEMzSZI0EU1ax1AGYIPqfjiXeR4PfGyQ9l8Mcf47q1td1yDn3sEjw6NeuwFt3zRgCNc22f+Q6iZJktQxhmaSJGki2hC4uU1jPXYYfUZiA4KhDLTWWg9lY4HeW0uXlw6hizLLbDowaQTGlyRJGnGGZpIkaSJaC/ydsuj8ULdJQ7RvPYzXawym9gH+2IafYSC/AHYCVvTXmJlHDHRiRMygXIb5gcwc1q6g1eWePZn52X7aJlPCsw2HM1aDr2fma5s8p/F192bo2XuSJEmDMjSTJEkT0arMfGq7BouIxwAPZeZA65s1rqu1NDMXteu1+6ml97WaWr8tIjYAvg/sB7w0It6cmT8YpP9k4DOU9dWIiOcBb8jMh2e4Ve/HA02UscHQXZrmTDdJktQSQzNJkqR1txdwRkR8Fvh2Pzs/blw/ISJmUWZhtcPqzPxr7djU4Z4cEV3AtyiBGcBM4MSIuDwzHxrgtM2BZzc8PwzYKSJekZnXD/e1a7qq+ynV5gmtmtbweNjvgyRJUiNDM0mSNBFNiYgNM3NVm8Z7OrAD8EVKQPaZWvujQjPgNOB1bXr9vwH1mXObDOfEaobZN4GXNRyeCxwxSGBGZt5fXQb5AeBDlMDracDvIuL9wJmZOezZbhExlb7Q7Mjq1g7Thu4iSZL0aIZmkiRpIlle3XcB50fEl4H5wJoWx+uhzBZ7ffV8GfD1fvrdAJxRPb6nVks7NI71ceBxwxk/IjYHfkCZKdfrc8AJg1xq+rDM7AY+EhG/AL4LPJGyftmngf0j4jWZed8wf4b+gsV2WJcZa5IkaQKbtHZtU8tdSJIkjVkRcRIlVBopH8vMDw6zltOBdwOLM3NGKy8WEXOBg4HrMnO3Js/dBfgefTPUeoB39reg/xDjvBm4gLIe2XeBfRua7wVenZlXNDNmNe7OwG8pM8X+DOydmQubHUeSJKlVzjSTJEkTyZmUGU0voKzb1Y6/HnZRFrv/KfCRJs4b8NLHFvS7U2Z/ImIT4GPA2ym7f0KZIXdEZv4wIralBIuXZea3hhhrW+Bc4BTgeMr7+lngmKpLF9D0JbARsSPwE0pgdhXwssxsZkMBSZKkdWZoJkmSJozMXAmcXN06rXetrckRsX2LY/Reetg1aK9H2gzYkb7AbD7wksy8ISL2Ba6oxntmRHx7iHXJ3lH1fSIlOLskM98eEfOBoymzw+Y1URsRcSjwNfrWZNsPWBgRzQzTn3mZud26DiJJkiYOQzNJkjShRcTngDuBpcCFg63BFRHfoi+genNmPrgOL/2Y6n4T4OZ1GAea2CEyM2+PiP2AbwDPpARmd1bN/025pPKJVdtBwCX9jRMR2wFvqZ52A6/PzNXVa5wWEf/VzOWUEfEEylpo7doAoO7eERpXkiSNU5OH7iJJkjSuvQr4JPB5SvgzmBcDLwcOpYRs6+IxQ3cZthnNdK4W+X8N8LyGwIxqN9FPNXT9eEQMNIvtTMqi/wCfyszraq8xrMAsIh4TEScDt9IXmH2dMiNuWsPtnKqtB3hure1zDUMe0nB8On2bPNyDJElSE5xpJkmSJrqllNDptsz85zD73jec3SUHk5mvA143UHtEbAHcXz39cGaeui6v18/rd1PWMqs7l7Le2VOBZwBvBL5Yq+21wEuqpzcAH2r29SPiycBbgTcAW1aHFwNvz8zza30PAt5WPT0rM69paHtcNQaUDREuaWh7En2/7zrTTJIkNcXQTJIkjVsRcQqwGlhOmXHUzaMX/9+oul8dEW8dYsjevhvU+m5AuUSy9/aPzPzqutTeKZm5KiLeCcytDn0yIi7LzLsAIuLp9M3s6t1AYHULLzUNOIy+wOynwJsy847GThHxfMqunJOAa4H31cb5BH2z9k6ptT254fH8FmqUJEkT2KS1a9uxaZQkSdLoExFLKbtlrm8/zcwX9lPPJsBWwxxjBnB19fgcyuWjw7E6M/86zL4DiojvAYdXT39KuTR1JvBb4OnV8SMy8zvr8BpPBX4IfCQzv9dP+yuBr1LCyv8F9mxccy4i9gB+TQnUfpGZ+9bOfxXwzerpazPz663WKkmSJh5nmkmSpPFsLfAQZUZUN2W2WeNfDKcAj68eL2bodcqeQNkIYA2PvNxvQ/pmmW3Yz3m99gIuHWbtjY6pbsORQKu7cTZ6G7AnMAt4ASW024W+wOysdQnMAKpwb3b9eETMBD4DvLo69GfgRbXAbAZwPiUwe4i+TQkaNc40u31dapUkSROPoZkkSRrPNh1s7bFqJtO3q6eHZ+YVgw0WEfMoa339NTMHDKYGWTx/yRD1tsOidgySmf+MiMOAX1IuPz26ofnHwDvb8TqNImIjSlj3AcqsNigh41GZubih3xTgO/SFYh/LzFv7GXKbhseGZpIkqSmGZpIkadwaxmL9r6/ulwK/auPrDrQL56qGx0fVF7xv1OxGABHxF8qsrVWD9WvStcBVQOOlpksolzoOtdPosFU/6xuAEyiz+aD8b/L+zPxcrW8X5ZLN3pp+Rtn9tD+9odpa4I4B+kiSJPVrcqcLkCRJ6oSI2AvYv3r6rcxcuR5etm1B0yDWaVfPXhERwO94ZGAGsAnw64jY99FntfQ6HwbupARfT6AEXN8DntFPYLYRZVOAo6pDtwIvHyTA6w3N7s3MdoaJkiRpAnCmmSRJmnAi4vHA16qnqynrZ60Po34HpoiYBRwPHEfZ4RLgbuCjwLHAM4AAroqIK4BPAVdlZqs/24cpl2IeTdmx87TMvLGfup4KXAjsXB2aB7wwMx8YZOwnVfdemilJkppmaCZJkiaUiNiNsqPittWhT2ZmDvP0rtp9s0byd6/eXUKbDq8iYhKwG/BGyiyuqQ3NXwNOzMxFEXEe8AlKqDYJ+Pfq9veI+C5wGXBtM5duZmZPRJwAfDozb+untmmUAO8U+kK8a4GXZub99f4N5+1B2XUTDM0kSVILDM0kSdK4FxFTKZcZvgl4MSXwAbgAOLWJoXp/d+poaBYRO1JCv4col0seSN+i9/cOcFrj+V2UDQ12Al5EeU8eV+t2LXBSZv6i90BmPgS8IyK+R5l51nt567bASdVtaUT8HrgBuAn4K3B7f4FYw7jdwCPaI+KJwOsou4bOqg6vpoR2H8vM1Q19N6BclrohsDnwXOCMhuHmDfxuSJIk9c/QTJIkjVsR8SzgdGAPYHpDUw/wn8DJw9gsoNGGtftmbTx0l4dNa3hc/51tI8qljP355kADRsROwNcpl1dOHaDbjcApmXnpQONk5jXAARHxPOCDwAH0rZU7Hdi3uvX6AXDYQOM11BfA3sBLKGFeYzj5U+Ddmfnnfk7dGbiGvjC0UQ/lsk5JkqSmuBGAJEkat6qAZSGPDMxuAJ6Xme9vMjCDviBr2qC9BvYQZQbXtfTtjDmQxplfj3i9zPw9j7zkcDXw38B/ZOblAw2YmX+kzESrB2bLKJdh7pGZzx4sMKuN99vMfCFl7bB3A3/sp9sKyuWcg4qIGcDZwBcooVkXJfC6HNg7M184QGDW+35c1E/TSuDtmXnDkD+MJElSjTPNJEnSePdG4JmUYOgM4KJ1WLS+N7x6TCsnZ+Yvgec0+VoAm/bT/raqjruAP2XmsmGOewZlZth9wM+AnwCXZOaSYZ7/KJl5F/Bp4NMRsS2wF2V2357Ar6v2ocZYFBEvoYR/0yiz076ZmX8bZhlfBPYB/g78CfgNcFlmLmj255EkSQKYtHbtqN/ESZIkaZ1ExNTMXNnpOkaDiJhMWcvsxnUID5t6vWZm9Pm/lSRJGi0MzSRJkiRJkqQa1zSTJEmSJEmSagzNJEmSJEmSpJpxvxFARCyi7BA1v8OlSJIkSZIkqbNmASszc8ZQHcd9aAZM7erq2mjWrFnbdroQSZIkSZIkdc78+fPp7u4eVt+JEJrNnzVr1rZXXXVVp+uQJEmSJElSB+23337ceeedw7oa0TXNJEmSJEmSpBpDM0mSJEmSJKnG0EySJEmSJEmqMTSTJEmSJEmSagzNJEmSJEmSpBpDM0mSJEmSJKnG0EySJEmSJEmqMTSTJEmSJEmSagzNJEmSJEmSpBpDM0mSJEmSJKnG0EySJEmSJEmqMTSTJEmSJEmSaqZ0ugBJkiRJkjR2dC9ZwtplyzpdxsMmbbwxXZts0ukyNA4ZmkmSJEmSpGFbu2wZi799Pt0LH+h0KXTN3IxNj3gVGJppBBiaSZIkSZKkpnQvfIDuBfd3ugxpRLmmmSRJkiRJklRjaCZJkiRJkiTVeHmmJEmSJEkdNJoW1ndRfamPoZkkSZIkSR00WhbWd1F96ZEMzSRJkiRJ6jAX1pdGH9c0kyRJkiRJkmpanmkWETsA1wI7ZuY/Go7/E5hZ6350Zn6hap8OnAXMARYCJ2XmhbWxjwJOqca5ADghMx9qtVZJkiRJkiSpGS3NNIuIrYEfApvUjm9DCboOAHZtuP2godv5wCHAccBpwHkR8dyGMeYA3wAuB44AdgY+00qdkiRJkiRJUiuanmkWEbOBK4A7gKfVmp8NLMjMKwc4d1fgYGBOZs6tjm0LnAwcWHU7DbgkM4+v2ucBN0fEqZl5b7P1SpIkSZIkSc1qZabZnsAZwPv6adsFuG6Qc/cHFgOXNhybC+wTEV0RMQvYgTIbDYDMnAfcDOzbQq2SJEmSJElS01pZ0+xLmdkTEXv30/avwFMi4nZgS+B/gA9m5hVV+1bATZnZ3XDObcC0qu1x1bE/1ca9DdiuhVolSZIkSZKkpjU90ywze/o7HhGTKOuXPQC8i76F/i+LiO2rbtOARbVTV1T3W1btDNBny2ZrlSRJkiRJklrR8u6Z/ZhE2QDglsxcBhARVwG3Am8C3gmsBLpr562q7qdV7QzQZxqSJEmSJEnSetC20KyagXZ97djqiLgG2Kk6dB/wnNqpM6v7ZZRZagBbU2apNfa5tV21SpIkSZIkSYNpZSOAfkXEJhGxXz9NmwMbVY+vAWZHxIyG9l2q+7uB24H5wB4N406i7Mp5d7tqlSRJkiRJkgbTttAMeAbw04jYtvdARDyFstvmNdWhqygzyk6s2icBxwF/ycx7q9lqFwHHRsTG1TmvAB4PXNnGWiVJkiRJkqQBtfPyzGsj4veUhf/PocwuOwFYCny26rM6Ik4GPh8RO1IW99+dsmlAr9MpQdl1EXE9cDhwSWY+4tJPSZIkSZIkaaS0c6YZwH8AN1OCrw8AvwZ2zMw7ejtk5rnAocBmlAX/D8rMuQ3tt1Mu2bwRmA2cAbyyzXVKkiRJkiRJA2p5pllm/pKyY2bjsXuAw4Zx7sXAxYO03wYc2WptkiRJkiRJ0rpo90wzSZIkSZIkacwzNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqDM0kSZIkSZKkGkMzSZIkSZIkqcbQTJIkSZIkSaoxNJMkSZIkSZJqpnS6AEmSpIF0L1nC2mXLOl0GAJM23piuTTbpdBmSJElaTwzNJEnSqLV22TIWf/t8uhc+0NE6umZuxqZHvAoMzSRJkiYMQzNJkiaI0TRrC4Y/c6t74QN0L7h/PVQkSZIk9TE0kyRpghgts7bAmVuSJEka/QzNJEmaQJy1JUmSJA2Pu2dKkiRJkiRJNYZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVGJpJkiRJkiRJNYZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVGJpJkiRJkiRJNYZmkiRJkiRJUs2UThcgSZI0XnQvWcLaZcs6XcbDJm28MV2bbNLpMiRJ6ig/n9UqQzNJkqQ2WbtsGYu/fT7dCx/odCl0zdyMTY94FfhLuSRpgvPzWa0yNJMkSWqj7oUP0L3g/k6XIUmSGvj5rFa0HJpFxA7AtcCOmfmPhuPHA+8EZgF3Ae/PzG83tJ8JvKM23LWZ+ZyGPkcBpwAzgQuAEzLzoVZrlSRJkiRJkprR0kYAEbE18ENgk9rx1wJnAj8CXg/MA86PiF0buj0bOBvYteH22oYx5gDfAC4HjgB2Bj7TSp2SJEmSJElSK5qeaRYRs4ErgDuApzUc7wJOBT6QmZ+sjn0fuBc4FLguIiZRQrBPZeYfBniJ04BLMvP4aox5wM0RcWpm3ttsvZIkSZIkSVKzWplptidwBvC+2vG1wCHAZ3sPZOYKYBnQVR16GvBYoN/ALCJmATsA5zeMMQ+4Gdi3hVolSZIkSZKkprWyptmXMrMnIvZuPJiZPcAfG49FxM7AE4DfVof+FVgJXBoRzwLuB84DPpqZq4Gtqn5/qr3mbcB2LdQqSZIkSZIkNa3pmWZVODZcHwVuBS6tnu8GrAK+B7wE+CJwEvChqn1adb+oNs4KYMtma5UkSZIkSZJa0fLumUOJiCOBA4GXZGZ3dfgzwOcy82/V86si4jHAWyLiFMosNIDuR47GKvoCNUmSJEmSJGlEjUhoFhFPAT4PfDkzL+89npm399P9N8D7KZdm3lcd2xpY2NBnJmXGmiRJkiRJkjTiWtkIYFDVzLGLgNuB42ttz4uI+mWWm1f3G1XnzAf2aDhnEvBs4O521ypJkiRJkiT1p62hWUR0ARcATwYOrXbPbPRl4K0N/ScBr6ZsCPDXar20i4BjI2LjqtsrgMcDV7azVkmSJEmSJGkg7b48832UdcxOBmZExL9Wx5dkZgJnAWdHxBTKrLL/AP4dOKZhg4HTKUHZdRFxPXA4cElmXt/mWiVJkiRJkqR+tfvyzMOr+48B1zXcvgiQmV8EPgC8gbLm2ZbAizPz3N4BqnXPdgFuBGYDZwCvbHOdkiRJkiRJ0oBanmmWmb8EJtWO/Z9hnPdp4NND9LkNOLLV2iRJkiRJkqR10faNACRJkiRJkqSxztBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqpnS6QIkSZLUGd1LlrB22bJOl/GwSRtvTNcmm3S6DEmSJGAdQrOI2AG4FtgxM//RcHw34GxgNnA18IbMvKOhfTpwFjAHWAiclJkX1sY+CjgFmAlcAJyQmQ+1WqskSZIebe2yZSz+9vl0L3yg06XQNXMzNj3iVWBoJknSqPrD1kT+o1ZLoVlEbA38ENikdnwb4ArgOuAw4BXA5RGxS2aurrqdD+wJHAdsAJwXEXdm5tXVGHOAb1CCtx8DHwY+AxzdSq2SJEkaWPfCB+hecH+ny5AkSQ1Gyx+2JvoftZoOzSJiNiUYuwN4Wq35PcBy4ODMXB4RVwLzgEOACyNiV+BgYE5mzq3G2xY4GTiwGuM04JLMPL5qnwfcHBGnZua9zdYrSZIkSZI01viHrc5rZSOAPYEzgPf107YfcFFmLgfIzG7gUmD/qn1/YHF1rNdcYJ+I6IqIWcAOlNloVGPMA24G9m2hVkmSJEmSJKlprYRmX8rMMwdo2wr4U+3YbcB2De03VWFaY/u0qm2r6thgY0iSJEmSJEkjqunLMzOzZ5DmacCi2rEVwJZDtFP1mVY9HmwMSZJGBRdolSRJksavlnfPHMBKoLt2bBV9YdhA7VR9VlaPBxtDkqRRwQVaJUmSpPGr3aHZfcDWtWMzgWUN7c/pp52qT++3jq2BhbU+t7avTEmS2sMFWiVJkqTxqZU1zQZzDbBH7dguwN0N7bMjYkatnarP7cD8xjEiYhLw7IYxJEmSJEmSpBHV7plm3we+GRGzM/OmiNgGOBj4QNV+FWVG2YnAh6pA7DjgL5l5L0BEXAQcGxFfz8xlwCuAxwNXtrlWSZIkSdI4M5rWHAXXHZXGsnaHZnOBG4BfRcRlwAsol2R+GSAzV0fEycDnI2JHyuL+uwNzGsY4nRKUXRcR1wOHA5dk5vVtrlWSJEmSNM6MljVHwXVHpbGuraFZZq6JiAOAU4ADgJ8D783MBxv6nBsR84ETKAv+H5SZlza03x4RuwAfB2YDZwAfbWedkiRJGptG0wwSZ4+MDqPpvwnwv4vRwjVHJbVDy6FZZv4SmNTP8eXAe6vbQOdeDFw8SPttwJGt1iZJkqTxabTMIHH2yOgxWv6bAP+7kKTxpt2XZ0qSJEkjyhkkI2s0zdwa7qwt/5uQJI0EQzNJkiRJDxstM7ectSVJ6jRDM0mSJEmP4MwtSZJgcqcLkCRJkiRJkkYbQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqpnS6QIkSZKk8ap7yRLWLlvW6TIeNmnjjenaZJNOlyFJ0phgaCZJkiSNkLXLlrH42+fTvfCBTpdC18zN2PSIV4GhmSRJw2JoJkmSJI2g7oUP0L3g/k6XIUmSmuSaZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVKNoZkkSZIkSZJUY2gmSZIkSZIk1RiaSZIkSZIkSTWGZpIkSZIkSVLNlE4XIEmSJEkavbqXLGHtsmWdLgOASRtvTNcmm3S6DEkThKGZJEmSJGlAa5ctY/G3z6d74QMdraNr5mZsesSrwNBM0npiaCZJkiRJGlT3wgfoXnB/p8uQpPXK0GyMcoq0JEmSJEnSyDE0G6OcIi1JkiRJkjRyDM3GMKdIS5IkSZIkjYy2hmYRsTfwiwGaf5WZe0fEP4GZtbajM/ML1RjTgbOAOcBC4KTMvLCddUqSJEmSJEmDafdMs+uBXfs5/l3ghojYhhKYHQAsami/reHx+cCewHHABsB5EXFnZl7d5lolSZIkab0aTWsTg+sTS9Jg2hqaZeYS4A+NxyLihcATgE8CewALMvPK/s6PiF2Bg4E5mTm3OrYtcDJwYDtrlSRJkqT1bbSsTQyuTyxJQ1kfa5p9GDg7M++LiF2A6wbpuz+wGLi04dhc4F0R0ZWZ3SNXpiRJkiSNPNcmlqSxYURDs4h4PrATcFB16F+Bp0TE7cCWwP8AH8zMK6r2rYCbauHYbcC0qu32kaxXkiRJkiRJApg8wuMfC3w/M++NiEmU9c4eAN5F30L/l0XE9lX/aTxyrTOAFdX9liNcqyRJkiRJkgSM4EyziJgFHALsXR2aRNkA4JbMXFb1uQq4FXgT8E5gJVC/BHNVdT9tpGqVJEmSJEmSGo3k5ZkvB+YDvwPIzB7K7poPy8zVEXEN5RJOgPuA59TGmVndj54tZiRJkiRJkjSujeTlmS8HLsrMtQARsUlE7NdPv82BjarH1wCzI2JGQ/su1f3dI1WoJEmSJEmS1GhEQrOIeCJlxljjLpjPAH4aEds29HsKsCclLAO4ijKj7MSqfRJwHPCXzLx3JGqVJEmSJEmS6kbq8sz9KGuT9YZhZOa1EfF7ysL/51Bml50ALAU+W/VZHREnA5+PiB0pi//vTtk0QJIkSZIkSVovRuryzH2BP/Uu+N/gP4CbgdOBDwC/BnbMzDt6O2TmucChwGaU4O2gzJw7QnVKkiRJkiRJjzIiM80y83UDHL8HOGwY518MXNzuuiRJkiRJkqThGMmNACRJkiRJkqQxydBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmqmtHvAiDgIuKSfpmmZ+VBE7AacDcwGrgbekJl3NJw/HTgLmAMsBE7KzAvbXackSZIkSZI0kJGYafZs4LfArrXbyojYBrgCWAIcBtwFXB4RGzScfz5wCHAccBpwXkQ8dwTqlCRJkiRJkvrV9plmlNDs6sz8Q70hIt4DLAcOzszlEXElMI8Skl0YEbsCBwNzMnNudc62wMnAgSNQqyRJkiRJkvQoIzHTbBfgugHa9gMuyszlAJnZDVwK7F+17w8sro71mgvsExFdI1CrJEmSJEmS9ChtDc0iYhbwRODEiHgwIhZGxDci4vFVl62AP9VOuw3YrqH9pipMa2yfVrVJkiRJkiRJI67dM812q+6vAw4F3gkcAHy/Oj4NWFQ7ZwWw5RDtNPSRJEmSJEmSRlS71zT7NbBTZj48mywi7gSuiIhnASuB7to5qyhhGYO009BHkiRJkiRJGlFtDc0y8wHggdrh31T3OwH3AVvX2mcCy6rH9wHP6aedhj6SJEmSJEnSiGr3mmZPj4jZtcObV/cbAdcAe9TadwHurh5fA8yOiBm1dhr6SJIkSZIkSSOq3WuavQM4u3bsNdX9NZS1zV7aG6xFxDbAwcCVVZ+rKDPKTqzaJwHHAX/JzHvbXKskSZIkSZLUr3avafYF4NqI+DrwS+DZwNuACzPzzxFxM3AD8KuIuAx4AeWSzC8DZObqiDgZ+HxE7EhZ/H93YE6b65QkSZIkSZIG1NaZZtUGAIcAO1MCtBcC7wJeWbWvoeym+RVgR+DnwO6Z+WDDGOdSdt7cjLIpwEGZObeddUqSJEmSJEmDafdMMzLzJ8BPBmlfDry3ug3U52Lg4nbXJkmSJEmSJA1Hu9c0kyRJkiRJksY8QzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqQaQzNJkiRJkiSpxtBMkiRJkiRJqjE0kyRJkiRJkmoMzSRJkiRJkqSaKZ0uQBND95IlrF22rNNlADBp443p2mSTTpchSZIkSZJGMUMzrRdrly1j8bfPp3vhAx2to2vmZmx6xKvA0EySJEmSJA3C0EzrTffCB+hecH+ny5AkSZIkSRqSa5pJkiRJkiRJNYZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVGJpJkiRJkiRJNYZmkiRJkiRJUo2hmSRJkiRJklRjaCZJkiRJkiTVTGn3gBGxBfB54MXAhsBvgTdl5t+q9n8CM2unHZ2ZX6japwNnAXOAhcBJmXlhu+uUJEmSJEmSBtL20Ay4EHg6cCqwCvgQcAnwrIjYhhKYHQAsajjntobH5wN7AscBGwDnRcSdmXn1CNQqSZIkSZIkPUpbQ7OI2B/4N+CZDTPLHgDOj4jtgWcACzLzygHO3xU4GJiTmXOrY9sCJwMHtrNWSZIkSZIkaSDtXtPsOmDX3sCssqC67wJ2qfoMZH9gMXBpw7G5wD4R0dXGOiVJkiT9//buPEquukrg+LcJCBjCEkBFlMWFOwoiDqKOIwLihoy7oiKyuXtcWMUNYcQB4SjuiiAKDiAw4nJQnBFxARdUkDmig1dwAxQxkJCEJgLp9Pzxe0U3la5KV6W6X1fV93NOzuuq97rO5YXUfb/7fu/+JElSSz2daZaZSylFr8meR+lN9lvgicAjIuJGYEvgV8Cxmfmd6titgd9k5tik3/8zsGG178ZexitJkiRJkiRNZSZ6mt0nIh4OvB44CVgF7AbcAHwYWAa8A/hmROycmb+lFMfuaPqYFdV2SyyaSdLAGlu+nPHR0brDuM/I/PnMW7Cg7jAkSZIk1WTGimYRMQKcCdwKfBQYoSwA8NvMHK2OuQy4nlJYOxK4Gxhr+qh7qu2GMxWrJKl+46OjLD3vHMYWL6k7FOYt3IxN9j8ALJpJkiRJQ2smZ5odDjwD2Csz76zeu3ryAZl5b0RcCexSvfV34ClNn7Ow2s6d6QeSpBkxtngJY7ctqjsMSZIkSer5QgAARMTTgZOB92fmFdV7CyJi7ykO3xzYoPr5SmDHiNh00v5dq+1fZyJWSZIkSZIkqVnPi2YR8Rjga8AllF5mDY8F/icitp907COA3SnFMoDLKDPKjqj2jwBvB36dmbf2OlZJkiRJkiRpKj19PDMi1gMuql5+HNg1Ihq7bwB+Tmn8/2nK7LLDgDuBj8F9j2u+D/hUROxMaf7/VODFvYxTkiRJkiRJaqfXM812Ah5D6UN2GfCLSX+eD7wEuA44BXgvcDmwc2be1PiAzPwM8FJgM8qiAC/IzK/3OE5JkiRJkiSppZ7ONMvMayirZLbzsml8ztcoj3hKkiRJkiRJs25GFgKQJEmSJEmS+plFM0mSJEmSJKmJRTNJkiRJkiSpSU97mkmDYmz5csZHR+sO4z4j8+czb8GCusOQJEmSJGloWDSTpjA+OsrS885hbPGSukNh3sLN2GT/A8CimSRJkiRJs8aimdTC2OIljN22qO4wJEmSJElSDexpJkmSJEmSJDWxaCZJkiRJkiQ1sWgmSZIkSZIkNbFoJkmSJEmSJDWxaCZJkiRJkiQ1cfVMSRpQY8uXMz46WncYAIzMn8+8BQvqDkOSJEmSps2imSQNqPHRUZaedw5ji5fUGse8hZuxyf4HgEUzSZIkSX3EopkkDbCxxUsYu21R3WFIkiRJUt+xp5kkSZIkSZLUxKKZJEmSJEmS1MSimSRJkiRJktTEnmbSgHClREmSJEmSeseimTQgXClRkiRJkqTesWgmDRBXSpQkSZIkqTfsaSZJkiRJkiQ1caaZJE2TfeMkSZIkaXhYNJOkabJvnCRJkiQND4tmkmoxl2ZtwfRnbtk3TpIkSZKGg0UzSbWYK7O2wJlbkiRJkqTVWTSTVBtnbUmSJEmS5ipXz5QkSZIkSZKaWDSTJEmSJEmSmlg0kyRJkiRJkppYNJMkSZIkSZKaWDSTJEmSJEmSmszZ1TMj4ijgHcD6wOeA4zJzVb1RSZIkSZIkaRjMyZlmEXEYcDJwOnAI8Crg6DpjkiRJkiRJ0vCYc0WziHgAcBzwycw8ITO/BbwBeHdEzNmZcZIkSZIkSRocc65oBuwKbAqcM+m97wMjwG51BCRJkiRJkqThMheLZlsD48C1jTcycxy4EXh0XUFJkiRJkiRpeIyMj4/XHcP9RMRrgNMyc37T+z8HLsjMj3T4eSvmzZu3wVZbbdXLMOs3NsaqO+9kfFW9ayOMrLMO62y0Ecyb1/5A4+1av8Xcb/FC/8VsvDOv32Lut3ih/2Lut3hhmjH3W7wwZ2Lut3ih/2Lut3jBf3czrd/ihf6Lud/iBf/dzbRpx9tHbrnlFsbGxv6RmRuu6di52CPsbmBsivfvAdb4HzTV542NjXHzzTffsnZhqaXly+uOoDP9Fi/0X8z9Fi/0X8zGO/P6LeZ+ixf6L+Z+ixf6L2bjnXn9FnO/xQv9F7Pxzrx+i7nf4oX+i9l467YVpfa0RnOxaPZ3YEFEbJyZyya9vxAY7fTDMnPTXgUmSZIkSZKk4TAXe5pdQ5lV9rTGGxGxANgB+GtdQUmSJEmSJGl4zLmiWWYuBS4Fjo6IxkOzb6Wsnvm92gKTJEmSJEnS0JiLj2cCHAf8CPhJRNwEvAT4RGYuqjcsSZIkSZIkDYM5N9MMIDOvBp4E3AJsBxwDHFlnTJIkSZIkSRoeI+Pj43XHIEmSJEmSJM0pc3KmmSRJkiRJklQni2aSJEmSJElSE4tmkiRJkiRJUhOLZpIkSZIkSVITi2aSJEmSJElSE4tm0gyKiHUiYt2645AkqQ4RMc88KEnqJ92M4cx3g2tkfHy87hikgRIRTwbeDewOLKze/j1wJnBqZt5dV2yDKiKeAPwU+FtmbldzOAMlIkaA7wDPBK4A9szMVfVG1f8i4hnAEcCOwFbAbcANwJeAszNzrMbwpClFxGeBNwHbZ+af2hz3HOAo4EnAxsAq4P+AzwCnZaYXny1M9xy3+N19gYuByzNzz95H1/+6Ob8RsT5wNeX7+tzMPGDmIux/HXxPvBR4MxDAlsCtwHXA6Zn51VkItW9FxDrAOpm5su5YBkk3Yzjz3XCwEjpkImI94EjgQOCRwO3AhcBxmbm0ztgGQUQcRPlinQesAK6kXAg8EjgR2CcinpmZ99QX5WCJiI2AC4D1645lQL2VUjAbBQ6xYLb2IuJNlIupkeqtVcDW1Z89gFdGxAszc0VNIfalDgZqC4D3Ai8HHgb8FTgbOMmbGq1FxDGU87um494HnFC9XAb8BNgG2Iny//0ewCtnKMy+Nt1z3OJ3HwqcxcT3ipqsxfk9kVIwuwV4W0+DGjAdfE+cSClONIxTvie2AZ4TEf8JHGTBYcJUBZ2IWFNBx3w3Td2M4cx3w8PHM4dIRDwAuAQ4CXgMsB5lhsM7gB9WX6zqUkQ8Hjid8mX7EeBBmfkvmfkoyp20cUqiO6q+KAfSZ4BH1x3EIIqIAE6uXr4zM39fZzyDICJ2AD4B3Au8Htic8l28DfAuYCXwLMrNDU1TBwO1TYEfAccAj6Cc++2A44CLI2LezEXZvyLiCMq1w5qO24cygBijnOMtM/NfKef4g9Vhr4iI/Wco1L413XPc4nfXAc4FtuhpUAOk2/MbEXsAh1UvX5eZS3oZ1yDp4HtiL0rxZwmlmLMx8ADKtdyHq8NeA7x6ZiLtP1VB58fAC4ENKQWd3zNR0Lm0GudN/p1NMd9NSzdjOPPdcLFoNlw+QZkxMkb5R78R5QLrHODxdHmxpvucQkn6p2TmUZl5Z2NHZp4GNKaaO62/RyLiYMqFlXcie6zqyfAlysXZZcBn641oYLyKcuH6ucz8fGYuzsxVmXlTZp4MfLI67vn1hdhfOhwMfxnYGbgLOBjYAHg4cCmlWHn4DITYtyLigRHxZcog4uY1HDsCnFq9fFtmntK4I5+ZY5l5LHBVtd88WOnkHLfxfmBPzIWrWZvzW91MPosyXjozMy/pfYT9r4tzfGC1/WBmfiUzl2fmysy8ITOPBr5W7TcPslY35c1309fRGM58N3wsmg2JiNiRMqsB4L2Z+ZHMvCszbwcOBRJ4S0Q8trYg+1hEzKckpV8AH2hx2C+q7dazEtSAq2ZBfYpysfCRmsMZRO+h9GdYBhzqIxI90/j3f32L/TdW2w1nIZa+1ulArbor/Nzq5aGZeXZm3pOZN1NmOywBPhARC1t+yPA5nvJoyc8o3wftPBz4A2VAdlqLYxqDCPPghOOZ/jleTUQ8HXgfcDcTRXdNOJ7uz+/HKbNGbqT0oNTUjqezc2we7EzHN+XNd9PX5RjOfDdkLJoNjzdS/r5vZaIyDkBm3kuZhTYCvGT2Q+t/mTmamS/OzCdl5miLwx5abZfPVlyDqmrKewEwnzKV/1v1RjRYImJXyiAM4LDMvLHd8erIX6rt81rs/7dqe/UsxNLvjqezgdqbq+01mXnB5B1VT8/PUwZprf5uhtEq4FjgaZn5t3YHZuaNmblvZj67TZHdPLi6aZ/jZhGxOXAeZQbKEcA1vQ+v73V1fiPiBcAhlBtzh2bmshmKbxB0eo5b5sGq9/Kzq5dDnwfX4qa8+W6auhnDme+GjwsBDI+nV9uvV0WyZo0p5/sw8Ry2eqTqG/Ci6uV3awxlUJxKeaT4J5QZUU+rN5zBUfXE+BLlEcI/AptFxKmUHlw/By52IYu1ci5wNPDcqnH9qZRZUttSemLsTWlAe2rLT1BDY6D2ocxcWSaftrV7tb2wxf5LKH83+1DaFgiObXHN0LGI2JjySBCYBydbm3N8FmWgfGFmfqZqWaD76/j8VsXIM6qXVwG7RcTzKQviXAF8x0Vx7qfTc3wmpbXGGyLiVuCLwCLKKponUPouL6I8kjjUqiLOi9dw2FTFGfNdj3QzhjPfDR5nmg2PR1Xbn0y1s1ppbBnwT7MV0JA5hNLoexz4WL2h9LeIeDHwFsrKr69wue2eOwZoPKb9EEpPkaA05P0KcG1EPLGm2PpeZt5AuUj9I6Vx/e8od5Gvo/QcuQ7YOzOvrSvGPnJsZn5wOt8BEbElsGn1cso8CPyq2poHK70qmFXeSZnZsILWj7MMnW7PcUQcTpmZegMT7TfUpMvzewrwoOrnHSg3M4Ly1Ma3gSsj4lEtfnfodHqOM/NHlEcEb6c0pf8TpSD5S2BfSpP7p2fmLb2NdPBMVdAx3/VcN2M4892AsWg2BCJiA8pjbFAGaK0sAhZW1XH1SERsxcQKhF/IzP+tMZy+FhHbUO5QjgMHVr0Z1CMR8VDKCo5QVlzaNjP3ysx9KRcMbwS2B74fETvVFOYg2JjSkHcqKyjLwmsNOhyobT7p5ynzYGYupsyo3H5t4tLqIuJxlFkNACd2+hii7q96hP5DlD5mL/fRwd6JiCdQBskAFwEPy8xnZeY+lBk97wd2A66oru/UnU0pfbqm8g/sAzVdUxV0zHc90s0Yznw3mCyaDYf1J/18R5vjGstoexHQI9Uy8OcACykzS46sN6L+Va3m+GVgM0ozVFex6r23AA8EVgKvzMxFjR3VCo+nU/ofbgT8ez0h9reI2BP4BhPfs9cD36PcaQf4Z+DCiPD89tZ08+BSyiPJ67c5Rh2IiAcC51MGyD9jYgCiLlQrOjbO52HeiOu5Iyk9fm8DDmpqun5PZp5AKaY9hNVXK9Q0RMQBwBeATSiP2V8L/BBozCzbE7g0Ig6tJcA+0aagY77rgW7GcOa7wWXRbDiMTfp5RZvjGn2KXK2md04AnkG5a7Zf1XxT3fkA8FTgx0w0qVdv7VVtv5WZf2lxzNer7b7VBYU681FK0+6bgd0zc4fM3Bt4BPBSyuMqAO+KCO+0904jD45n5j/aHGce7L0zKI98304pxvfykc9hdBql5cYF1cp56q1GHjy3TVPwr1fb5898OIOlavTfWPH818DOmblzZu5JmTH1BspYZQQ4uSpCqMkaCjrmu97oZgxnvhtQDniGw+RCWbt/vI2mpiaoHoiI/ShN6gHemJlXtTterUXE3pReW7dRkpB9zGbGltX2522OubXars9EzxdNQ0RsC+xSvXxN1dcFgMwcz8yvAq+q3noA8MzZjXCg3VVt1/TdYR7soYh4J7A/5bzvV/VPVZeqmTf7U2ao2sdsZnSSB7eZ4VgG0VMp1w4rgZdk5m8aOzJzZWaeAbyjemsLyqOwWl27go75bi11M4Yz3w02V88cApk5FhFLKdOgHwr8tcWhm1XbkVkJbIBFxFMoq1oBnJSZX6oxnEHwGkqRfwvgpjar5G0bEY2lnw/JzLNmIbZBckfTdiqTex62uguvqTVmji2jPIqymsy8NCKWUc6zj8r3zuJqu15EbJGZt7U4zjzYI9WiLSdVL9+amd+rM54BcWC1fTSwrE0u3GNSLtwrM38w04ENkDsohbM72hzTyIPmwM418uB1mXl9i2MuYmLlTPNgk2kUdMx3a6GbMZz5bvA502x43Fht2zV8fHC1vbPNMVqDiHgscDFluvMFwHvrjWgg3EtpeNzqz+QZlI33xlCnGnd8262m9ORq+5fMXN7mOK2uMcBamZnjbY5rXMAuaXOMOpCZdwCN/1+nzIMRsRETi+aYB9dCROwBnEu5zjwlMz9Xc0iD4h7a58LGzJLxSe+tWv1j1EYnefC6GY5lEDXy4HQfWzMPTjKdgo75rnvdjOHMd8PBmWbD4yrgccCuwH8176yWzt6iennTLMY1UCJiR8qSz1sAP6A0kW03ONY0ZObrafMoStVc/fvAnzNzu1kKaxBdAhwMHBQRH8rM+81KrRpQH169vHiWYxsE11MGtQsjYuup+sZVq+ItqF7+qHm/1spVlH5FuwK/mGL/U6rtcvtPdq/6Pm4MOs5jYkVeraXMfHa7/RFxMPBF4PKqR5Q6dwmlEf3bI+JzzX3Nql6Tr61emgc71yg07hAR62fm3VMc0+grdy/tH5MdKh0WdMx3HepmDGe+Gx7ONBsel1bb/Vo07270zvlztQyxOhQRDwYuo6yodC3wohYXA9JcdRFwDeXRk+9ExN4RsV5ErBsRzwAupzSg/gdwSo1x9qXMvAv4SvXyPc37q4bHn6xe/vfkXi/qiUYefGWL/Y08+MtZiGUgRcROwDcpK+x+FzjYG0fqM5+ltDHZFvh2RDw5ItaJiA0i4oXAFZTm64uqY9WBzPwdcCXlO+LtzfsjYksmVhw8MzOdacZ9BZ3LmH5Bx3zXgW7GcOa74eJMs+HxDUp/hu2BNwOfbuyIiA2AI6qX35r1yAbHUUw84voY4NY2/UaenZmXz0pU0jRl5qqIeBnl+2InykVA4wKg8cjgGPDqzPxjDSEOgrdRVlZ6S0TsRrmwvRPYjrJ65uaUlbBe2+oD1LVzKM2T94iIfTPzvnxXDdQas1nNg907jolHfvYAlrfJg5GZf56VqKRpysw7I+IFlBUyd6cUeFZx/4kGK4AXZuay2Y9wIBxIub44JSKeS1kV/R5Kr76XUr5DrgaOri3COWRSQefBTP+mvPmuM92M4cx3Q8Si2ZDIzLsi4tOUqbwfi4h1gS9QFgb4NCVRrWRiloM6t8ukn9el/b8vZ3lqTsrMP0TEk4FXU1Zy3IGy0tUy4KfAhzLzxzWG2Ncy87bq/L6OMjh4A7ApZRD2B8rMhY8647f3MvOmiDif8v/2+RHxJuCrlCLmGZTZI0spuVHd2WXSz+ut4VibT2tOysyrI+LxwEHAyyk3nLcAbqfM8jnBmcDdy8zrq/P7ZuAFlJtJCyg3kH5DmZH9qcxcUV+Uc0rHBR3zXcd2mfTzdMdwk3/HfDfgRsbHnUU4LCJifcodhb1bHHJMZvrIlSSp70xaLXD7Vku9R8RmlEHvzlPsHgf2z8zzZyRASZI6FBGXMvE45Zrct1qu+U7qHYtmQyYi1qP00jkc2KR6+xbg3Zl5dm2BSZI0C6pVw/6D8njKhtXb1wOHZeYltQUmSVIPme+k3rBoNqSqPmY7UXoI/DozXZJckjQ0qtVgHwssy8zr1nS8JEn9yHwnrR2LZpIkSZIkSVITm5FLkiRJkiRJTSyaSZIkSZIkSU0smkmSJEmSJElNLJpJkiRJkiRJTSyaSZIkSZIkSU0smkmSJEmSJElNLJpJkiRJkiRJTSyaSZIkSZIkSU0smkmSJEmSJElNLJpJkiRJkiRJTf4ftcvruFeUIOkAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1500x900 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,9),dpi=100)#在时间上趋势差不多\n",
    "sns.set(style=\"white\" ,font=\"Simhei\", font_scale=1.1)\n",
    "#上\n",
    "plt.subplot( 211)\n",
    "plt.bar(OrderTime_normal.index,OrderTime_normal.values,color=\"#01a2d9\" ,alpha=0.7)\n",
    "plt.title(\"普通交易\",fontsize=25)\n",
    "plt.xticks(ticks = range(0,24,2),fontsize=20)\n",
    "#下\n",
    "#下\n",
    "plt.subplot(212)\n",
    "plt.bar(OrderTime_ab.index,OrderTime_ab.values,color=\"#dc2624\" ,alpha=0.7)\n",
    "plt.title(\"异常交易\",fontsize=25)\n",
    "plt. xticks(ticks = range(0,24,2),fontsize=20)\n",
    "plt.subplots_adjust(hspace=0.3)\n",
    "plt.show( )\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "42b9333a",
   "metadata": {},
   "source": [
    "前半小时为0 后半个小时为1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "d42c317c",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"下单分钟\"]= train[\"下单时间\"].apply (lambda x: int(int(x[3:5]) > 30))\n",
    "train[\"下单小时\"]= train[\"下单时间\"].apply(lambda x: int(x[ :2]))\n",
    "test[\"下单分钟\"]= test[\"下单时间\"].apply (lambda x: int(int(x[3:5]) > 30))\n",
    "test[\"下单小时\"]=test[\"下单时间\"].apply(lambda x: int(x[ :2]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "fe2d724f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>下单时间</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>14:09:49</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>10:44:46</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>16:47:34</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>21:15:59</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>16:49:49</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID      下单时间    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  \\\n",
       "0   1  4283851335  14:09:49    手机摄影数码    POP  8002042497    三星  766000.0   \n",
       "1   1  4281111595  10:44:46      家具建材    POP  8002199518  纬度空间     100.0   \n",
       "2   0  4106833871  16:47:34      家居日用    POP  8002212182  品道天元    8800.0   \n",
       "3   0  4253622967  21:15:59  电脑办公打印文仪    POP  8001748897  清华同方     880.0   \n",
       "4   0  4276159555  16:49:49      家居日用     GO  1000341307  乐扣乐扣    4900.0   \n",
       "\n",
       "   商品销售数量 订单渠道  支付方式      下单用户ID   城市  下单分钟  下单小时  \n",
       "0     200   主站  合并支付   dakehu_zy  上海市     0    14  \n",
       "1     100   主站  合并支付  nonscorpio  广州市     1    10  \n",
       "2     100   主站  合并支付  qq-edf69d7  深圳市     1    16  \n",
       "3     100   主站  合并支付  benson2570  宿迁市     0    21  \n",
       "4     100   主站  合并支付   dakehu_zy  西安市     1    16  "
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "9c4aec3d",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.drop(columns=\"下单时间\",inplace=True)\n",
    "test.drop(columns=\"下单时间\",inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "a6b89fca",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train.csv')\n",
    "test.to_csv(r'test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "31df4f30",
   "metadata": {},
   "source": [
    "## 支付方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "40cef83b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "合并支付    71893\n",
       "货到付款    18321\n",
       "当当支付     1226\n",
       "在线支付      290\n",
       "账户余额      138\n",
       "Name: 支付方式, dtype: int64"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"支付方式\"].value_counts()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d546bb8d",
   "metadata": {},
   "source": [
    "异常率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "01cf49ef",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "支付方式\n",
       "合并支付    0.275173\n",
       "在线支付    0.251724\n",
       "当当支付    0.044861\n",
       "账户余额    0.028986\n",
       "货到付款    0.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby(\"支付方式\")[\"异常\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "75328b21",
   "metadata": {},
   "outputs": [],
   "source": [
    "def GroupByFeature(column , train,test,newcolumn ) :\n",
    "    #使用训练集数据创建字典\n",
    "    dic = dict(train.groupby(column)[\"异常\"].mean())\n",
    "    #建立新特征\n",
    "    train[ newcolumn] = train[column].map(dic)\n",
    "    test[newcolumn] = test[column].map(dic)\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "id": "9acc0914",
   "metadata": {},
   "outputs": [],
   "source": [
    "train,test = GroupByFeature(\"支付方式\",train,test,\"支付方式异常率\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "040538f1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>合并支付</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率  \n",
       "0  合并支付   dakehu_zy  上海市     0    14  0.275173  \n",
       "1  合并支付  nonscorpio  广州市     1    10  0.275173  \n",
       "2  合并支付  qq-edf69d7  深圳市     1    16  0.275173  \n",
       "3  合并支付  benson2570  宿迁市     0    21  0.275173  \n",
       "4  合并支付   dakehu_zy  西安市     1    16  0.275173  "
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "0ed4726e",
   "metadata": {},
   "outputs": [],
   "source": [
    "def encodePay(column ,train,test ):#编码 类似独热编码\n",
    "    dic = {}\n",
    "    feature = train.loc[ : ,column]\n",
    "    unique_ = np.sort(feature.unique())\n",
    "    for code, category in enumerate(unique_):\n",
    "            dic[category] = code\n",
    "#编码训练集\n",
    "    train[ column] = train[ column].map(dic)\n",
    "#使用训练集上生成的字奭典转化测试集\n",
    "    test[column] = test[column ] .map(dic)\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "id": "4b16e2ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "feature = train.loc[ :,\"支付方式\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "e7d9aaa0",
   "metadata": {},
   "outputs": [],
   "source": [
    "unique_ = np.sort(feature.unique( ))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "a79a9849",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array(['合并支付', '在线支付', '当当支付', '账户余额', '货到付款'], dtype=object)"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "35d441b9",
   "metadata": {},
   "outputs": [],
   "source": [
    "dic ={} #建立字典\n",
    "for code, category in enumerate(unique_):\n",
    "    dic[category] = code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "e5ef8ecb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'合并支付': 0, '在线支付': 1, '当当支付': 2, '账户余额': 3, '货到付款': 4}"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dic"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "868cef1e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        0\n",
       "1        0\n",
       "2        0\n",
       "3        0\n",
       "4        0\n",
       "        ..\n",
       "91863    4\n",
       "91864    4\n",
       "91865    0\n",
       "91866    0\n",
       "91867    0\n",
       "Name: 支付方式, Length: 91868, dtype: int64"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature.map(dic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "a50df719",
   "metadata": {},
   "outputs": [],
   "source": [
    "train,test = encodePay(\"支付方式\",train,test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "d43fb0ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    71893\n",
       "4    18321\n",
       "2     1226\n",
       "1      290\n",
       "3      138\n",
       "Name: 支付方式, dtype: int64"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"支付方式\"].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "82305c0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率  \n",
       "0     0   dakehu_zy  上海市     0    14  0.275173  \n",
       "1     0  nonscorpio  广州市     1    10  0.275173  \n",
       "2     0  qq-edf69d7  深圳市     1    16  0.275173  \n",
       "3     0  benson2570  宿迁市     0    21  0.275173  \n",
       "4     0   dakehu_zy  西安市     1    16  0.275173  "
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "7e071711",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train.csv')\n",
    "test.to_csv(r'test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "668cb718",
   "metadata": {},
   "source": [
    "## 城市"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7f16fce7",
   "metadata": {},
   "source": [
    "异常率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "id": "86cb54f1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "北京市        9578\n",
       "上海市        4514\n",
       "广州市        4157\n",
       "深圳市        3717\n",
       "天津市        2250\n",
       "           ... \n",
       "昌都地区          1\n",
       "广东省其他城市       1\n",
       "四川省其他城市       1\n",
       "神农架林区         1\n",
       "福建省其他城市       1\n",
       "Name: 城市, Length: 362, dtype: int64"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"城市\"].value_counts()#城市太多 使用省份进行分类"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 160,
   "id": "c3770898",
   "metadata": {},
   "outputs": [],
   "source": [
    "ChinaCity=pd.read_excel(r\"ChinaCity.xls\",index_col=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "id": "2ba10982",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>省份</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>市级</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>北京市</th>\n",
       "      <td>北京市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>天津市</th>\n",
       "      <td>天津市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>石家庄市</th>\n",
       "      <td>河北省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>唐山市</th>\n",
       "      <td>河北省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>秦皇岛市</th>\n",
       "      <td>河北省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>辽宁省其他城市</th>\n",
       "      <td>辽宁省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>四川省其他城市</th>\n",
       "      <td>四川省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>广东省其他城市</th>\n",
       "      <td>广东省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>云南省其他城市</th>\n",
       "      <td>云南省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>福建省其他城市</th>\n",
       "      <td>福建省</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>409 rows × 1 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "          省份\n",
       "市级          \n",
       "北京市      北京市\n",
       "天津市      天津市\n",
       "石家庄市     河北省\n",
       "唐山市      河北省\n",
       "秦皇岛市     河北省\n",
       "...      ...\n",
       "辽宁省其他城市  辽宁省\n",
       "四川省其他城市  四川省\n",
       "广东省其他城市  广东省\n",
       "云南省其他城市  云南省\n",
       "福建省其他城市  福建省\n",
       "\n",
       "[409 rows x 1 columns]"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ChinaCity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "id": "10bfc4af",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"省份\"]= train[\"城市\"].map(dict(ChinaCity[\"省份\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "d6afa4a5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>上海市</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>广东省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>广东省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>江苏省</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>陕西省</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率   省份  \n",
       "0     0   dakehu_zy  上海市     0    14  0.275173  上海市  \n",
       "1     0  nonscorpio  广州市     1    10  0.275173  广东省  \n",
       "2     0  qq-edf69d7  深圳市     1    16  0.275173  广东省  \n",
       "3     0  benson2570  宿迁市     0    21  0.275173  江苏省  \n",
       "4     0   dakehu_zy  西安市     1    16  0.275173  陕西省  "
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "dfbc2d59",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"省份\"].isnull().sum()#空值说明每个都映射上去了"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "7a292c48",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "省份\n",
       "青海省         0.382979\n",
       "内蒙古自治区      0.309628\n",
       "西藏自治区       0.272727\n",
       "山西省         0.256000\n",
       "甘肃省         0.255043\n",
       "海南省         0.250318\n",
       "江西省         0.245702\n",
       "北京市         0.241595\n",
       "陕西省         0.236769\n",
       "河北省         0.236292\n",
       "宁夏回族自治区     0.233161\n",
       "重庆市         0.232558\n",
       "新疆维吾尔自治区    0.231325\n",
       "河南省         0.225344\n",
       "吉林省         0.223310\n",
       "广东省         0.222260\n",
       "浙江省         0.219894\n",
       "山东省         0.217832\n",
       "湖北省         0.217329\n",
       "福建省         0.215807\n",
       "天津市         0.215111\n",
       "江苏省         0.212617\n",
       "辽宁省         0.211465\n",
       "云南省         0.207724\n",
       "湖南省         0.207155\n",
       "上海市         0.206912\n",
       "广西壮族自治区     0.201106\n",
       "四川省         0.190524\n",
       "黑龙江省        0.181818\n",
       "安徽省         0.159470\n",
       "贵州省         0.072279\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"省份\"])[\"异常\"].mean( ).sort_values(ascending=False)#异常率具有差异"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "id": "a11311f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "df=train.groupby([\"省份\"])[\"异常\"].mean( ).sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "e642b97e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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owIFCphfJRXX9OnT9e233z5zfT1+/FgxMTHPHCcqKkphYWHxPrOzs9Px48dVuHDhBP999NFHCUJp2bJlNWjQII0bNy7eq8CqVKli7kyse/fuun//vvlCw/fff6+LFy9q0qRJsrW1TRC4Hz9+rFmzZumjjz5ScHCw/vnnHx0/flyVK1dWo0aNdObMGS1cuFBp0qQxr8e0adMqS5Ysia6rXbt2adeuXQl6i2/btq22bNmi27dvS0r89W4vKu5d7AIFCqh9+/ZycnLS119/rZ9++umZHcQBAN5c3OkGALxSoqKiVK5cuUSHxe19Olbx4sXN/65Xr56mTZsm6cn7u6OjoxOdT9xXhsU6duyY0qZNm+j4zs7OGjdunHr06KEsWbJo8eLFGjhwYIJXk8WysbFR5syZNXjwYH3yySd6+PCh+vbtqxs3bmjBggWKiYnR8OHDVbt2bVWsWFGGYej27dsJ7kz//fffKlSokPLkyZNoOdKTd3c/rZf2/zYF//jjjzVz5sx4n8UGxb///tt8h/xZTfpbtGihyZMny8vLS1988UWC4Xny5NGAAQM0efJkRUVF6fvvv9f06dPj3YmPK23atMqYMaOmT5+uypUr686dO+rcubPs7e01evRohYSEaNSoUWrbtq3y58+v+/fv6/Hjx4nexc+YMaP587i9p0tPnit3dnbWli1b1KlTJ4WFhT3zzrX05G5/bFPx5CpdurT5e8mcObN69uxpbpkQERGRaMsIAMCbidANAHil2NnZaefOnXJ0dJStra0ePXqkevXqydPTM17I/fXXX7V8+XJt2LBBMTExCg8Pj/c8dZo0aTR79ux4zcdHjhypqKioeO/YPnLkiPn91s9Ss2ZNlSlTRnPnztX777+vdu3aPXP8Bg0a6MGDB/r++++1cuVKffzxxxo3bpzs7e01ePBg+fr6au7cuZKke/fuKSwsLN6rpaKjo7VgwQJ9//33zyzHyclJ+/btk729vbljst27d6t37946cuSIebzY55P/KzZ0p02b1txruL29fYJn00NCQnTnzh15e3srPDz8qRc0JKlly5ZatmyZZs+erQYNGqhOnTrPrEPr1q118+ZNTZo0SevWrVPr1q3VrVs3RUZGqkePHkqfPr169+4tSbp586YkxVtXSWFvb68ffvjB3Ez/8ePHz+zUbPfu3fL09FTFihWfOs79+/cTveP+XydPnpSzs7PKlCmjmJgYffrpp8qUKZMCAwOTVQcAwOuJ0A0AeOXkyJHD/G8PDw/lypVLH374Ybzerh0dHWVjY5PgjmYsk8kkOzu7eE2kbWxsZGtrm+izvM96T/PRo0fl6empc+fOqUWLFvr999/Vtm1bde7cWZUrV0502pCQEA0bNkwZM2bU4sWLVahQId25c0eDBg3S7du3tXjxYvOd5cSC5Nq1a1WjRg25ubk9dblilzvua62k/3tX+fNevSUl3uu3pAQ9h/v6+prfJ160aFHVr18/0el2796tqVOnKiwsTJ999pl+//13RUZGqkOHDk/tRO7+/fsaPHiwihUrptWrVyt37ty6dOmS+vXrJ1tbWy1cuNDcFPzGjRtycnJKUGdJ8vf31927dyU9eUThv0qWLGn+98OHD+OF7vDwcEnSgQMHNG3aNB07dkw1atRQo0aNtH79+gTzCg8PV+3atdWjRw917tw50XpJ0rVr17Rs2TK1atXKXIdRo0aZywIAvPkI3QCAV86dO3e0d+9e/fbbb7p7966WLl2aINjGvkf5aRIbFvdO77///qsffvhB58+fj9dEXXoSMM+dO6djx45px44dOn/+vOrVq6fJkycrR44cat26tTw8PNShQwdlyZJFFSpUUNGiRVW8eHHza7ucnZ01f/58xcTE6Pjx4xoxYoQ2btyoJk2aaObMmXJ1dZW3t7f8/f21fPlyZc2a1Ryww8LC9Ouvv+qnn3565np6+PChgoKCZGtrGy8kx95BjQ2gkszPvptMJnPnYpLMz4L/93VjBQsWjDe8QIECGjVqlPLnz6/y5cubv4+bN2/q/PnzOnz4sP7++2/dvn1bzZo1U+/eveXq6qqmTZtqypQpatGihXLlyqUKFSqocOHCev/991WqVClJUpYsWbRixQpFRkbq4MGDmjZtmnbt2qU2bdqoc+fOcnBw0N9//62goCDNnz8/QbP52OX877PvT+u47OHDh/L19Y13wSY2AM+dO1e1a9fW77//rqJFi0qStm7dqsuXL+vEiRPmCxl//fWXwsLCEiyLYRjm7czf31/ffPONnJ2d1bVr1wTLERYW9syLPQCANwOhGwDwyjl//rymT5+uZs2a6euvv070jm14ePgz320d+zqtuB4/fmxuNl24cGHly5dPtWvXVt26deONt23bNo0ePVoZM2ZU/fr1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Vau0efNmubi4qF+/fvLz89Off/6prVu3Wuwq5f79+xUeHi53d3c9fvxYefPmVfv27XXt2jVdvHhR165d059//qnLly+/UDmxUnMbSa26xX4Hu3bt0syZM/XLL78oJiZGc+fOVe/evVWlShVVr15drq6uOnnypCWqlqrfW2pvIykRHBysPXv2KFu2bDKZTLp3756cnJxUu3ZtlSxZUqVKldLEiRPVv39/VatWTS4uLpowYYIuXryYqt+bJVy9elVdunRRnz599P7772vSpEn66quvNHjwYG3fvl3dunVT+/bttWjRIq1atUru7u4KCQlRnjx5rPq9vcnbZGqWl5rHgDf14oWUuhdBpdTdRlL7e3uT6/aqX3S9c+eOWrVqpbZt26pq1aoaMWKEWrdurVGjRmn16tUaNWqUhg4dqv79+2vq1KmSJF9fX02ZMiVVzyXjioiI0NSpU/XWW2+pV69eunjxogoUKKDu3bvrwoULunLlik6fPq0lS5aYg3dyvYnnki8bofs186ptmOHh4fLw8FDatGlVqVIlLVy4UEuWLNGxY8f08OFD3bhxQ2+//bYcHBx0584dSdKOHTt05cqVJM0/Ojpa9evXV+bMmXXixAl5enpq6dKl8vT01MSJE9W6dWsNGzZMs2bN0rx583T48GGNHz/eXFZi3NzcFBwcrMKFC8vNzU3ZsmVTixYttGPHDl27dk2ZM2fWhQsX9PvvvysyMjLFHcEZhqHg4GAFBAQoJCREW7Zs0aNHjzR69Ght2bJFmzdv1pdffqm6devqyJEj2rp1qyIjI1NUVlyptY0EBQVZtW5xD1Amk0nbtm3TtGnTNGnSJF25ckX37t1TrVq15OXlpUuXLil37tw6cOBAkretl1m3uF7GNpIS6dOn1+zZs/X48WPNnDlTzZo1U/fu3fXRRx+pefPmcnNzU5EiRVSxYkXVrVtXY8eOVVBQkG7duqXp06enyvdmKffv39ft27fl4uIiOzs7Va5cWS1atFDnzp1Vs2ZNjR8/XlOmTFHevHn1wQcfaNKkSfLz89PQoUOt9r2l5nZi7bL+20wztX8DqXUMkN7MixepcRH0vwElNffJknXX45tct7hexsXylDCZTCpUqJCuX78ue3t7tW3bVn379tWECRNUv3599ejRwxyqe/Xqpe3bt2vUqFFydnZOtf3IfwUFBclkMik8PNzciWmvXr20YcMG/f3332ratKk+/vhjHT58WCtXrkxRGamxnURFRb0250CWQOh+hb3sHXNS2NnZ6euvv9bbb7+t1atXq3///poxY4YmTJigsWPHqmbNmurYsaP69eun8ePH6/jx4/L09EzyFT83Nzd99NFHypEjh7Zu3ap9+/bJ3t5e0pPnTeL2Xr5582Z9//33mj59uvLmzSsp8WfIAwMDlSFDBu3fv19nz57VokWL9M8//2jLli1q2LChWrdurdu3b2vPnj0KDw9P8rr4b1kmk0np06dXs2bNFBoaqr1796pBgwb6559/tG3bNtWuXVtlypSRj4+P/Pz81LBhQ6VJkybJ5SVWprW2kbjlHD16VI8fP1a6dOnUvHlzq9TNMAzzAWrfvn3y9/fXrVu39N133+nmzZvq1KmTVq1apTFjxsjBwUGLFi3ShQsX9Nlnn2nQoEFJLudl1C1umYZhKH369FYty5KyZMmiQYMG6dq1a5o8ebL584cPH5qfeTOZTBoyZIgePnyo4cOH6+bNm3J3d7f492YthmGofPny+uGHH9SrVy8dPXpUVatWVYMGDVSkSBE9fvxYvr6+ypo1q9q3b689e/Zow4YNqlOnjg4ePGjR7y329xkVFZWq24mDg0Oq/LZjTxydnJxSrW6GYVjtGPBfqXkyGR0draCgIPn7+1u9vNiLoNa8mBa7jaxfv14PHjyw+vEmLmuea8Xd/rdu3Sp/f/83pm7/LS81thNLyJ49uzw9PXXq1Cl5enrq7bffVqVKleTk5KS33nrL3HeQYRjavn27li1bpm+++UaPHz9Olf1I3HUa21rUxcVFzZo109WrV7Vjxw5169ZN586d059//qlatWqpSpUqunr1qh4+fKhatWoluzxrbiexz4pLTzKENY83rxpC9ysq7o758OHDCg0NtXoQSMky2traqmTJkqpXr55OnjypxYsXm4ffu3dPDx48UEREhKQnoXjevHmaPn26ChQo8Nz5x+6ksmXLpk8++UTvvPOO9u/frz179kiS0qZNK2dnZ0nSli1b9Msvv2jEiBHmecddh2vWrDE/f1KpUiW5urrqyJEjKlKkiObOnas//vhDdevWValSpXTgwAEFBATo22+/Nc8/Kesi7oF0z549unDhggzDULVq1RQUFKT06dPr4cOH8vDwUI0aNVSzZk1t375du3bt0pQpU5Qv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unTpkmrWrKlOnTopKChIffr0UfPmzfXxxx8nmCa5x4DUvKAW+1sJDw/XvXv3NHXqVJ09e1bvvfeePvjgA125ckUBAQHq3bu3XFxczBe0XuTihfSk2bWDg4OuXbumhw8fKmvWrKpWrZpKlCihCxcuqGHDhoqJiZGNjc0LXQS9ffu2GjVqpLx582revHnauHGjgoODtXv3bpUrV06urq46ceKEPvnkE5UuXVq5cuVKdl3ilidJ7du3V8aMGc2vgVq1apW8vLw0evToROef3ONo3LI8PDzk5OSkfPnyaf78+frggw8kSYULF1aNGjUssi95GecIsZJz3pqS7eRFhYWFycbGRvb29rpx44a2b98uX19fFSpUSHXq1FHHjh3l6OioWrVqqUaNGnJycjLf3ClfvrwCAgL01ltvqXbt2vGCd+PGjVW9enVzOS9yLhkrNDRU9+/f1+HDh3Xx4kXz8+5//PGHdu7cqWrVqqlevXrm8VevXq1mzZql6Hj6559/6q+//lKmTJl07949BQUFqW/fvlq8eLFy586tPn36mMdN6b7k4MGD8vT0VL9+/VS2bFldvnxZmzdv1pkzZ/T5558rbdq0+ueffxQSEqJx48aZy3pZ5wbW9PJvM0DSkx4JfX19tX37duXMmVP29vbq2rWr/P39VblyZQ0fPlx16tRR5cqVtW3bNl2/ft38/FOePHmsGrhv3rypf/75R+vWrZP0ZIf57bffqkyZMuadVZo0abR//37t3LlTkZGRKl68uLp3767ly5c/M3DHxMRo06ZN+vHHH7Vjxw5JT54VL1q0qMqXL69u3bqpRo0aWrFihapUqaJhw4bp9OnTypIliz777LN4z3jE/kAnTZqk0NBQhYSEaNKkSSpTpowyZMig8+fPa8+ePYqKipKXl5cuXrxontbe3j7ZO0nDMLRz507t379fzZs3V9WqVeXs7KxTp06pefPmSp8+vZYsWaLWrVvLxcUl3vOLyfXfg3fRokXl7u6uoUOHKiwsTFmyZNH69evVt29fpU2bVhMmTFBAQIB5+pRsI4MGDZKjo6O2b9+uv//+W+fPn9fy5csVEBCgrl276urVq/roo490+PBhrV69OsV1izVt2jRFRESoZcuWGjp0qMqUKaN27dqpW7duKleunAoVKqTWrVurY8eO5meCYyV352ztuv33Wqarq6v69++vnTt3at68eWrdurWqVaumvXv36ty5c4qJiZGjo6MePnyY7LIsKXfu3CpXrpzKlSsn6ckzY82aNdOff/6ppUuXatq0aapfv76cnZ21bNky/fLLL9q4caN27dold3d3GYahzZs3K3/+/IqKitLSpUvVpEkTDRw4UD179tTYsWO1efNmRUVFSUr+92Yp9+7d04gRI9S3b1+dPXtWERERmjJligoXLqyPPvpI3bp1U3h4uN577z0VK1ZM27ZtU/78+TV79mwVLFhQ6dKl0/79+5U+fXo5Ojpq6NChL/Q8oouLi8qUKaOJEyfK3d1dDRo0UKlSpVStWjW1bt1aderU0ZYtW/TFF1+oXbt2Fgnchw4d0vnz582/s7Nnz2rKlCkqWLCgGjdurBYtWqhly5aaNGlSinveDQ8P1/nz57Vlyxb9+++/6tGjh3lYzZo1Vbp0afn4+Jh7v+3Zs6du3rz5QoHbMAzZ29srd+7c2rFjh1q2bKlcuXJpypQp+uabb/TZZ58pe/bsOnLkiFavXm1+rj0lxwCTyaS+ffsqKipK06ZNU7t27ZQzZ075+PiY36xhZ2ensLAwjR49WpcuXZKNjU2K9sexv5Vt27bJ29tbly9fVs+ePeXi4qK1a9fKy8tLH374oW7duqXx48dLkh49eiSTyZTic4Tbt2+rVKlSGjx4sPlZ1vTp06tixYpatWqVvL29FRUVpQsXLigyMlLZsmVL9vuIY+v1448/qkyZMkqfPr0ePXqkAwcOaMuWLZo6dapat24tf39/NW3aVLVr17ZI4B4xYoScnZ3NgXvNmjXavHmzJkyYYH6+9L+Sux5jy+rXr58kqUePHrp27ZoKFiyogQMH6vDhwwoJCbHYviS1zxGSc976119/mc9bU7KdvIjg4GD16NFD33zzjTZs2CAbGxv99NNPypo1q6pXr64uXbqofv36mjx5su7cuaNt27Zp6dKl+vfff9W5c2e1a9dO5cuX17Vr1+Tl5aXg4GDVrl1b9evX17p168wdbUop24/EZRiGLl++rFmzZunatWvq1auXeViVKlVUq1Yt7dy509z3QPfu3XXo0CFJSTueGv//FY1DhgzRokWLFBMToyxZsujcuXPKkSOHMmfOrJMnTyp37tw6fvy4ub+T8PDwFO9LypUrp/79+2vhwoWaPn269u3bZz6OPnr0SFWqVNGQIUOUNm1a9e7dO8l1eR3ZvewFwJMfwcaNG3XmzBk9fvxYo0eP1q+//qqsWbMqV65c2rJli8qWLasuXbro9OnTmjBhgmrXrq2ePXumyvKdPn1ap0+fNv8IbGxsVLRoURUtWlRdu3ZV9erV1alTJ+3du1cTJkxQSEiI6tevH6/53tPY2NioU6dO5r+Dg4PVokULFS1a1NwkvWPHjublePDggebOnStPT894Tb9ifffddzKZTJo6dap69+6t06dPa86cOXJycpKnp6fSpEmjrl27avr06frpp5/0+eefJ2k544pt0mMymVS5cmU5OTnJZDJp0aJFypQpk1q2bKkff/xRN2/eVEREhObNm6cOHTrIy8tLfn5+ypQpU7LKk/5vB9S/f39lzZpVPXr0MAeAgQMHqkWLFsqVK5f54B0TE6OhQ4dqzpw5SW7CG/eE5OHDh8qePbu+/fZbDRkyRB988IHSpUtnvtN56tQpvfvuuxo/frxCQkL06NEjPXz4MN6V86QyDEMPHjyQYRj66quvtHHjRoWHh6tChQrq37+//P39VaZMGTk5OWnu3Ll66623Ej0hSmrdAgIClC1bNvXu3dsqdYtb1po1a9SkSRNFR0drxIgRqlKlim7fvi1PT0/17dvX3ImLYRi6dOmSfHx8zJ2KvQzVqlWT9KTTqd9//10NGzZUkSJF1KFDB9WqVUt58uTRv//+a65X4cKFVb16dV29elWjRo1S2bJltX37do0dO1Z79+6Vq6urChQooHv37unu3bvKly+f8uXLJzu7l3voyZo1qz777DOlTZtWRYoUUVhYmJo3b66cOXOqa9euypQpk/Lnz69Ro0apSpUqsrOzMwe37NmzKzAwUBs2bNDQoUOVJUsW9erVSwEBASn6bcfeAS1cuLCmTZtm7rH8wIED5k65+vXrpzx58ujrr7/W3LlzXyiUSk96aV64cKF69+6tkydP6tatWzp27Jjee+89OTk5affu3VqyZIlcXFzk6+ubol61b9y4oeXLl6tjx44aMGCApCcnbrG/DxsbG1WtWlWOjo7av3+/GjdurPfee++F73SYTCbt2rVLixcvVpo0adSoUSNt2bJFW7duVYkSJVS9enXNnDlTDx480P3791WpUqVkn0Q+evRItra2cnR0NF9Qa926tdKmTauuXbsqKipKe/fuVdq0aVWoUKEXvqD26NEjOTo6atasWdq/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xS+oXb9+XaNHj1a7du3i3UXr1auXHj16JFdXV3388ccqVqyYhg4dqiJFisjPz08XL17U5MmT4919fp5Lly6pb9++Gj16tN577z1JT15dd+XKFcXExKhfv35asGCBrl+/ru+++06fffaZbGxstHHjRkkp20+OGDFCvr6+5uNNRESE5s+fr9q1a2v37t1q2LChxowZo549e+rtt9/WwIED1b1792TVS3qyvx06dKguXbqkffv2ycfHR2fPntXly5f177//asyYMcqRI4f279+vVatWqVKlSmrUqFGiremSWrfhw4fr4cOHmjFjhiTp+PHj8vDwUO3atfXFF19YbF8Sd5vMkyeP3NzcdPr0aXl7e2vt2rUWD/ixYgO39OR57rNnz8owjFfivDXWf7fJf/75R8eOHVP9+vUVGRmpiIgIZc2aVR07dlR0dLQ+/PBDPXr0SKtXr9bs2bNVu3ZthYSEaN68ebKzs9O3334r6ckjHnv37lWNGjVUrVo1iz1/HNuiLjw8XJGRkTp06JDSpUunrFmzaseOHSpYsKCqVKmizp07K1u2bCm6SLl69WqlS5dO7777rtKlS6f169fr7Nmz+vDDD/XPP/8oICBAdnZ2srOzk42NjQoXLqyuXbsmuQ4RERHmDuUWLVqkcuXK6euvv9axY8e0YsUKlS1bVlWrVtX27dvVrl07ubm56cKFCzp58qQaNmwoR0fHFK271wXNy1+S2B/InDlzdPDgQb333nvy9PRUyZIlVbhwYRUuXFh79uxRy5Ytzb2B58iRw9xMz9rvM4zdidy/f19Zs2ZV3rx51bVrVxUrVkyGYei3335TsWLF1LlzZw0dOlT29vbasGFDkudvMpm0d+9e/fTTT2rdurU++OADffLJJ5KeXG3fvXu3unbtqmbNmikgIED37t2T9KTesSdKAQEBcnNzMz8bFBISom7duqlr166qU6eO0qVLpw0bNujOnTuKiIjQyJEj4wXulJzclShRQidPntSBAwdUsWLFeE1gMmXKpIsXL8rf318XLlzQihUr1K9fP/M4yd0pxy7b+PHj5erqqtatW+vevXvq2LGjDh06pOXLl+vzzz/XH3/8of3795t3bCdOnEjywfu/QXHPnj3mpkpx69WsWTP99ddfOnPmjIYMGRKvg43kHnBCQ0OVLl067d27V5LUpk0bnTp1yty0WZLef/99mUwm/fTTTypfvryyZcum+/fvP7WFw7OkT59eW7dulclkUs+ePfXbb7+pQoUKypw5sx4/fqymTZvKxcXlhesW92TLxsZGS5Ys0YEDB7Rjxw69++67qlChgnmbCwgIUMWKFbVnzx4FBARo4MCBya7Xi4p70jRixAj99ttv+vbbb9WpUye5uLgoKipKtra2yps3r65cuaLKlSure/fu+uuvv+Ti4qI//vhDTZs2laurq+zs7OTq6qratWtr165dOnPmjFxcXMzvSH4VxH6X//77r7Jmzaq33npLNWrUMHdI07lzZ128eFEbNmzQpEmTtHHjRg0bNky5cuVS3759FRgYqIwZM6pPnz6qXLmyzpw5o+zZsyd7OQICAtS5c2ctW7ZMly9f1vz58zVjxgwFBQXp5MmTKlmypN566y0FBwdrxYoVatasmUqXLm2ePjkXZh4+fKjBgwfryy+/1L1797Rq1SpNmDBBhQoVMu9L+/XrpwwZMsjT01PZs2dX6dKlzU16k+vhw4d69OiR3NzcZGNjo+XLl+v27du6evWqsmfPbu6D4/Hjx/r5559lMpn0zjvvmC9wJXef/N9jQHBwsLp166avv/5a9erVU7t27RQTE6PMmTOrZ8+emj17ttasWaMLFy7o008/TXbo3rlzp0JCQjRo0CDzYxZVq1Y19yacJk0adenSRQMHDpSTk9MLXVC7evWqxo8fr27dusnNzc3cu/6gQYNUvHhxlStXToGBgZKedIbUpk0bmUwmzZ8/X9OnT9fbb7+d5LKuXLmi4cOH68svvzQHbulJJ1+xzVCnT5+uDz74QJ07d9acOXNUqVIl+fn5md/3nJTv7b/Hm9hH0mLZ29vrm2++kSTNnDlTn376qcLCwhQYGChHR0d5enomu9n3jRs3NGbMGFWtWlWRkZHy9fVVzpw5lTFjRq1fv14jR45Ujhw5FB0drYoVKypLliz/r707D8gp7R8//m5fSQuKLIMh65DBZGRfHkT2sZMwYxi7qVCKFiFlzTZjxpqRfYx9aCFly1LKUlFStCjt2/n90a/zZZ5nZkTLZK7XP9/na+7uc537Pvc51+daPh+WLl1KixYtaNWq1Tsf54+VU3JycuSAe+fOnaSlpbFmzRqWLl1KamoqNWrU+OB7Cfz3NXn48GHatm2LsrIy+/btY9iwYR/UR3hTySBtyUBeUVERp0+fpnPnztSvXx8TExMCAgIqrd/6v9oaEBBATEwMEyZMoGvXrnI/IzExkVWrVrFmzRrWr1/P8OHDefz4MS1atGD79u04OzujoKBAr169mDp1KgsWLMDT05N58+bRu3dv9PX1+fTTT4EPWyZfct04OTnRoEEDOnbsiK+vr1whpOQ1kZGRvHr1itzcXHR1dd854C55BispKeHi4sKTJ0+oXbs2jRs3pnr16tSrV48DBw6gpqbGuHHjSEpKQlFRkatXr9K4cWO+/PLLdz6X1NRUZsyYwciRI3n27Bmqqqp07tyZO3fukJSUxIoVK9i3b5/cplevXsmfY5MmTSp921lF+PjP8B+mqKiIrKwsrK2tadu2LU+fPqVFixZyZtw3M/2Gh4cTERHB999/T926deUSMZIklXupHQUFBQICAnB2duarr75iypQp8sM4NzeXV69e8erVK3r06MHSpUvx8fEhLy8PJSWlP+3IvH79mtDQUMzNzQkKCsLDw4OhQ4dy8uRJdHR05IdAyf6wTZs2sWLFCoYPHy7PCr153mvWrEFJSYnly5ejoKBArVq1+O677+Rsst27d0dJSYlDhw4xb948evToIe8nKs1nmJKSQnZ2NnXr1uXKlSscO3aMGTNmoKioyI8//sjIkSMxMjJCQUGBESNGEBISwldffYWOjo68z640JEkiLS0NGxsbqlevjoGBATY2NixatAgtLS369euHpaUlhw8fJjEx8YMCgTcznebn5zNq1ChCQkIoKCjAzMwMKL5p6+vr07dvXxISEggMDJSTz5Q24M7JyWHVqlV06tSJtWvX4uDgwLp166hbty5Dhw4F3n6IqKiooKSkhJGRETt37izVPp+YmBiys7O5f/8+derUoW3btqSlpWFkZERgYCAbNmzA2tqa3r1706dPH2JiYt7r3N583fz589HV1cXe3l4eUTYwMOD+/fsoKCjIo/xr165l4MCBWFtbk5mZ+c7nVFbCwsI4efIk33//vVyWzc/Pj1GjRqGpqcm4cePkB2DTpk3x8vJCkiSio6O5ffs2RkZGWFtbExgYiLe3N15eXpiZmdGsWTMuXbrEqVOnmDJlChoaGuTm5so5ECpDVlaWnHfB39+f+fPno6+vz86dO6lTp448i2doaEjjxo05e/YsXbt25dWrV5w8eRILCws8PT2xsbGhoKAAKysrAFq0aPFe7dHV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\n",
      "text/plain": [
       "<Figure size 1200x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,6),dpi=80)\n",
    "sns.set(style=\"white\",font=\"simhei\", font_scale=1.1)#公剧三个坐标领不一样的图像\n",
    "plt.bar(df.index,0.5,color=\"orange\" ,alpha=0.6)\n",
    "plt.bar(df.index,df.values,color=\"#e66765\",alpha=1)\n",
    "plt.title(\"异常交易/全部交易的比例\" ,fontsize=15)\n",
    "plt.ylim(0,0.52)\n",
    "plt.yticks(ticks=np.arange(0,0.6,step=0.1),labels=[\"0%\",\"10%\",\"20%\",\"30%\",\"40%\",\"50%\"],fontsize=20)\n",
    "plt.xticks(range(len(df)),df.index,fontsize=10,rotation=45)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "id": "52945a84",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"省份\"]= train[\"城市\"].map(dict(ChinaCity[\"省份\"]))\n",
    "test[\"省份\"]= test[\"城市\"].map(dict(ChinaCity[\"省份\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "id": "906d8acd",
   "metadata": {},
   "outputs": [],
   "source": [
    "def GroupByFeature(column ,train,test, newcolumn ) :\n",
    "    dic = dict(train.groupby ( column)[\"异常\"].mean())\n",
    "    train [newcolumn] = train[ column ] .map(dic)\n",
    "    test[newcolumn] = test[column] .map(dic)\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 163,
   "id": "9a7887ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "train, test = GroupByFeature(\"省份\" ,train,test,\"省份异常率\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 164,
   "id": "3a196917",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>上海市</td>\n",
       "      <td>0.206912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>广州市</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>广东省</td>\n",
       "      <td>0.222260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>深圳市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>广东省</td>\n",
       "      <td>0.222260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>宿迁市</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>江苏省</td>\n",
       "      <td>0.212617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>西安市</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>陕西省</td>\n",
       "      <td>0.236769</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率   省份     省份异常率  \n",
       "0     0   dakehu_zy  上海市     0    14  0.275173  上海市  0.206912  \n",
       "1     0  nonscorpio  广州市     1    10  0.275173  广东省  0.222260  \n",
       "2     0  qq-edf69d7  深圳市     1    16  0.275173  广东省  0.222260  \n",
       "3     0  benson2570  宿迁市     0    21  0.275173  江苏省  0.212617  \n",
       "4     0   dakehu_zy  西安市     1    16  0.275173  陕西省  0.236769  "
      ]
     },
     "execution_count": 164,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "id": "db7a75f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 165,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"省份异常率\"].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "id": "13446b0c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test[\"省份异常率\"].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "6aba9868",
   "metadata": {},
   "outputs": [],
   "source": [
    "def encodecityProvince(column ,train,test):\n",
    "    dic = {}\n",
    "    feature = train.loc[ : ,column]\n",
    "    unique_ = np.sort(feature.unique())\n",
    "    for code,category in enumerate( unique_):\n",
    "        dic[category] = code\n",
    "    train[ column] = train[ column].map(dic)\n",
    "    test[column] = test[column ] .map(dic)\n",
    "    return train,test     "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "id": "93bc276e",
   "metadata": {},
   "outputs": [],
   "source": [
    "for column in[\"城市\",\"省份\"]:\n",
    "    train,test = encodecityProvince(column,train,test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "id": "d24ba3cb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>131</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>220</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>115</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>289</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率  省份     省份异常率  \n",
       "0     0   dakehu_zy    5     0    14  0.275173   0  0.206912  \n",
       "1     0  nonscorpio  131     1    10  0.275173  11  0.222260  \n",
       "2     0  qq-edf69d7  220     1    16  0.275173  11  0.222260  \n",
       "3     0  benson2570  115     0    21  0.275173  14  0.212617  \n",
       "4     0   dakehu_zy  289     1    16  0.275173  28  0.236769  "
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "id": "4bcb5df8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "异常         0\n",
       "订单ID       0\n",
       "商品一级类别     0\n",
       "商品所属渠道     0\n",
       "商品ID       0\n",
       "品牌         0\n",
       "订单金额       0\n",
       "商品销售数量     0\n",
       "订单渠道       0\n",
       "支付方式       0\n",
       "下单用户ID     0\n",
       "城市         3\n",
       "下单分钟       0\n",
       "下单小时       0\n",
       "支付方式异常率    0\n",
       "省份         0\n",
       "省份异常率      0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 174,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.isnull().sum()#因为映射使用的是训练集的 如果测试集的比他的多所以可能存在NULL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "c6431865",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "361"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train[\"城市\"].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "id": "70b41369",
   "metadata": {},
   "outputs": [],
   "source": [
    "test.loc[test[\"城市\"].isnull(),\"城市\"]=362"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "id": "50a47e5c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test[\"城市\"].isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "id": "85af634a",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train.csv')\n",
    "test.to_csv(r'test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc7e294c",
   "metadata": {},
   "source": [
    "# 商品类别 订单渠道 商品渠道"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "id": "316178ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "商品一级类别\n",
       "健康医疗         0.233255\n",
       "图书音像         0.284768\n",
       "家具建材         0.262840\n",
       "家居日用         0.235079\n",
       "家纺寝居         0.173088\n",
       "手机摄影数码       0.261565\n",
       "服饰鞋帽         0.276811\n",
       "母婴用品玩具       0.173181\n",
       "汽车用品         0.229976\n",
       "生活电器厨卫电器     0.193856\n",
       "电脑办公打印文仪     0.215029\n",
       "电视冰箱洗衣机空调    0.201848\n",
       "箱包奢品         0.349172\n",
       "美妆个护         0.148900\n",
       "运动户外         0.234420\n",
       "钟表首饰         0.343860\n",
       "食品酒水         0.199508\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 182,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby(\"商品一级类别\")[\"异常\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "id": "7b5029a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "df=train.groupby(\"商品一级类别\")[\"异常\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "id": "dc26715d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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evUKRYoUQalSpdgrmYiIKAMxlCYiIiIiIiIiIiKiLGP5291EREREREREREREROnEUJqIiIiIiIiIiIiIssy/u8kXEWWratWqQalUInfu3Nm9FCIiIiIiIiIiykZhYWGQy+UIDg5OdSxDaSJKs8TERGg0muxeBhERERERERERZTO1Wg1Lty9kKE1EaZYnTx4AQGBgYDavhIiIiIiIiIiIslPDhg0tHsue0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZaTZvQAiIiIiom+VTqOBSPEB0GmyeylERERE9F8hdwLkrtm9imzFUJqI0i1y80aoP3zM7mUQERFlKGm+vHDt3Rd46w8kvM/u5RARERHRf4HMGfDoylA6uxdARP9+6g8foX7zOruXQURElDlU0YAyMrtXQURERET0n8Ge0kRERERERERERESUZRhKU7bbvn071q9fj7dv32b3UqwSHByM6Ojo7F6G4P79+6hVqxZq1aqFu3fvZvdyiIiIiIiIiIiITGL7DspWHz9+xJIlSxAfH48zZ85g//79EIlE2b2sVIWFhWHYsGGQSCSYPn06GjRoAI1Gg6ioKNjY2EAikUAikUAsFgt/TNHpdNBqtdBoNNBqtVCpVACAHDlyWL0mJycnfP78WZiXiIiIiIiIiIjoW8RQmrKNTqfDpEmTEB8fDwD4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IiIiIjNEEgngUDC7l0FERERE9J8iTn0IEREREREREREREVHGYChNRERERERERERERFmGoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWkWb3AoiIiIiIiIjo26HTaCBSfAB0muxeChHRf5PcCZC7ZvcqshVDaSJKt8jNG6H+8DG7l0FEREREROkkzZcXrr37Am/9gYT32b0cIqL/Hpkz4NGVoXR2L4CI/v3UHz5C/eZ1di+DiIiIiIgyiioaUEZm9yqIiOg/ij2lKcskJCRYNT46OhrPnj3D8+fPM3Qdy5YtQ+nSpVGrVq0Mnffz58/w8fHB8ePHUx07c+ZM7Ny5E0ql0qp7aDQaLFu2DCEhISmO++OPP3DhwgWr5yciIiIiIiIiIspsDKUpyyxYsAD169fHlClTEBoamur4wMBANGvWDB06dMjQdTg4OAAAcufOnaHzHjlyBMePH8eECRNSDI1VKhWOHj2KGTNmYMKECVbd486dO1i9ejVatWqFq1evmh23b98+DBgwAK1bt4ZKpbLqHkRERERERERERJmJoTRlmfPnz+P9+/e4desWcuXKlep4e3t7g78toVarUx0jk8kAALa2thbPa4nevXvDy8sLCoUCw4cPR3x8vMlx58+fR1RUFBwcHDBq1Cir7nH58mUAQO3ateHp6WlyjEajwY0bNwAA3t7ewvMSERERERERERF9C9hTmrLEtWvX8OHDBwDAqFGjIJFIUr1GH6ZKpZa/TIcPH47r16/D0dERtra2EIlERmNiYmIAAA8fPkSTJk1MzqPT6aBUKpGYmIhGjRph2rRpFt1/5syZCA4OxsuXL7F69WqMHj3aaMy2bdsAAMOGDUO+fPksfLKkNZ06dQoA0L9/f7PjLly4gKioKOTOnRvNmjWzeH4iIiIiIiIiIqKswFCassSyZcsAAEWKFEHx4sXx/PlzJCYmIiEhAZUqVYJYbFy0rw+UTQXL5uh0OsTGxiI2NjbVsQqFAi9evLBonKVcXV0xePBgvHjxAv369TM6f+vWLdy6dQtFihTBr7/+avG8QFKV9MuXLyGTyXDhwgVcuHBBOGdnZ4ehQ4dCJBJh9+7dAICOHTumWCWt1WqRmJgIhUIBOzu7DK8cJyIiIiIiIiIiMoWhNGW648eP486dOwCAly9folGjRgbn//rrL6HP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3TFw4ECj8zY2Nhg7diwA4Pfff8fVq1fNzvX06VPcvHkTefPmRZMmTYTjgwcPhq2tLc6cOYNbt24ZXPP+/XuEhobCxcUFHh4eBucs6Sn9+PFjAElV1mkNpAFg7dq1uHTpEoYPH27ReLlcjrZt2wof679GlipdujSGDh2KefPmMZAmIiIiIiIiIqIsxUppyjbnzp3DmDFjoNFoULx4caxcuRIRERGIiIhAeHg4IiMjER4eblA9PHnyZBw7dgwODg5G861cuRIA0KtXL0il/3tp58+fH127dsXmzZuxYMECoZoaSArFAeDHH3+ESCQymM+SSum///4bAPDdd99Z+/gGvq6GTk1ERASmTp0KABg2bBgKFSpk9T29vb2tvoaIiIiIiIiIiCi9GEpTtomJiRH6RF+7dg3Xrl0Tzjk7OyNv3rwoXbo08ubNi7x582LdunV4//49li5diokTJxrMdeHCBZw8eRLu7u5C6w6VSoX3798b9JK+ffs2Lly4gPr16wMAAgICAAB169Y1Wl9qobRCoRDWXLly5bR8CdIkISEBAwcORGhoKDw9PdG3b98suzcREREREREREVF6MZSmbNOyZUts374dxYoVQ7ly5eDh4YGCBQuiQIECcHR0NBovEomwZ88e1KhRw+D49evXMWrUKACAVCpFjx498PHjR3z69AlardZontWrV6N+/foICQnBn3/+CScnJzRt2tRoXGqh9Pnz54VQvV69elY9e1rFxsZiwIABuHPnDooVK4aFCxcaVXgTERERERERERF9yxhKU6bTarW4dOkSgKRNBf39/dG2bVtIpVKhUtkSvXr1Qvfu3Y1C4vDwcCFAfvfuHd69eweJRIJChQqhWLFiKFq0KIoVKwZ7e3v4+Pjg7t27CAkJwbRp06DT6dC+fXuTfaP1c5rrKb1161YASVXSX2+SmBmePHmCoUOH4sWLF3B3d8emTZvg6uqa6fclIiIiIiIiIiLKSAylKVP9+eef8PPzEzYEVKvV8PX1xZ9//on+/fujaNGiFs8ll8shl8uNjjdr1gz+/v7InTs3atSogTJlyqB48eImxz58+BANGjTAxYsXcfv2bbi5uWHAgAFG4zQaDWJiYgCYrpT29/cX+kn36NHD4mdIC61Wi4MHD2L27NmIj4+Hh4cHNmzYgPz586d4nUqlApD0NSciIiIiIiIiIvpWMJSm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EVGaiSQSwKFgdi+DiIj+RcTZvQAiIiIiIiIiIiIi+v+DoTQRERERERERERERZRmG0kRERERERERERESUZRhKExEREREREREREVGWYShNRERERERERERERFlGmt0LICIiIiL6N9FpNBApPgA6TXYvhYiIiIj+jeROgNw1u1eRrRhKE1G6RW7eCPWHj9m9DCIiokwnzZcXrr37Am/9gYT32b0cIiIiIvq3kTkDHl0ZSmf3Aojo30/94SPUb15n9zKIiIiyjioaUEZm9yqIiIiIiP6V2FOaiIiIiIiIiIiIiLJMpoXSd+7cwaxZszBv3rwMmU+n0+HSpUsZMldGi46ORnR09P+xd9/RUVXtGsCfmUxJIwUIoYUeiID0KkgNCCoICagUAVGalEgVFEGa9CIG6V0EpEgnIEUpoqEjAUInpCdCSJ9+/8g958tkajro81uLRTJnn733mQneu56837uhVqvzNc+FCxewdu1aPHnyxOZYnU6HNWvW4ObNm/la0x6hoaGYPHkyvv7660KZ/6+//sLnn3+O6OiC+5/A/vnnn/jjjz/w9OnTApszLx48eIA5c+agT58+MBgMxboXIiIiIiIiIiKil0GhhdIRERHYsmUL9u7dm++59Ho9Pv30UwwdOhTHjh0rgN0VrDfeeANNmzbFrl278jyHwWDAwoULsWjRInTr1g3h4eFWxx89ehSLFy9GYGAgjh49avc66enpOHPmjMXr4eHhSE9PN3otJiYGv/zyC06ePGn3Ova6du0aBgwYgKNHj+br/cvps88+w8cff1zsv8g4dOgQtmzZgitXrlh93+2l0Whw+vTpAtgZERERERERERFR8Si0ntJKpRIAoFAo8j2XVCpF7dq1ce7cOcyYMQPNmzeHh4eHeD09PR0NGza0e742bdpg7dq1+d6XwNnZGS9evECpUqXyPMf27dsRFhYGAAgICEBGRgauXbsGIKsqWqPRwMHBAU2bNoVWq8XKlSsBAG+//Ta6du1qNJdOp0NGRgYMBgNKlCghvp6eno5hw4YhNDQUffv2xZQpU0w+nzFjxuDp06cIDAzErFmzAAAuLi4A/veZFqQGDRqgQYMGuHbtGg4cOICgoKACmdfR0RFpaWlGPyfZ9ejRA2lpaRbv79y5MyZOnJjvfXz88cfYunUrUlJSsH79erRt2zbPc6nVagwePBgXL17E3LlzERAQYHR99OjROH78eK7nLV26NM6fP5/nfREREREREREREeVGoYXSMpnM6O/8Gj16NH799Vc8evQI8+bNw7x588RrTk5O4tdVq1a1OEdaWhri4+ONxue0e/du+Pr6on79+nbvTXhGa/Na8/TpUyxZskT8fvv27di+fbvJuDp16mDv3r3Yvn077t+/DwA4cuQIjhw5Ynbebt26YdGiRUb7rFGjBkJDQ/HTTz/h+vXrCA4ORvny5QFkhZ6RkZHQ6XRG4amDgwMAQCKR2P1Mer0earUajo6ONse+9957uHbtGiIjIxEWFoY6depYHa9SqSCTycR9mSOsaylIj4uLw7Nnzyzen5KSYnPf9nBzc8PAgQOxf/9+1KlTBxqNBnK5PE9zKRQKNGvWDBcvXsS0adNQsWJFNGvWTLwuPGujRo1QuXJlm/Olp6fj2LFjef65JSIiIiIiIiIiyotCC6WFADM3QaY1CoUCQUFBmD59OmrXrm2yllwuh0ajQUhIiMU5QkJCEBQUZLF6e+PGjZg3bx68vLywZ88eeHt727U3a+GoLcnJyRg5ciRSUlLg5eWFDz74AMePH8fdu3fRunVrvPbaa9BoNNBoNChTpgyePn2KZcuWAcgKqT09PREXF4d79+6hbNmyqFSpEjQaDVQqFcqWLWu0lkKhwPTp01GnTh188803CAsLQ2BgIFauXIkGDRrgxo0b0Gq1cHZ2Rps2bfL8TEBWG5AePXpAIpFAJpNBJpNZ/FnQ6/Xi1x9++KHFX2RotVpoNBoYDAZs2bIFzZs3t7i+rSBdCHB37dqFevXqia9PmDABBw8etFnhHxsbm+uq5w0bNmDDhg02x02YMAFDhgwxe2306NEIDw/HiRMnMHr0aOzevRs+Pj4A/vfLkd69extVUR85cgR79uxBp06d8OGHH4qvR0ZG4tixY3kOyYmIiIiIiIiIiPIiT6F0XFyc3aFlVFQUatWqZXXMBx98gJkzZ5q8npycDJlMBqVSCQcHB3Tp0gVvvPEG3N3dTcZKpcbtsePj45Geno4KFSqYhG6WQuTGjRtDoVAgISEBI0aMwPbt2+1qWSEEnxqNxuSatcrYhIQEDBs2DOHh4ZDL5fjuu+/QuHFjODk5YeHChXBycsKECRPE8Wq1GgMGDEBqaipq1aqFHTt2QKFQ4O+//0avXr1QokQJbN261eZ+e/XqhfLly2PkyJFwcXFBhQoVAGQdDghkhb/du3cXx2dkZADI+ty7dOlitB+1Wg2pVGrSL1kikcDBwQEKhQJyuRxyudwkbNbr9UhISACQ1ULCVriv1Wqh1WqRnp6e71922FrLVoW/q6ur+LXw85lfQi/v7HPnJJFIMG/ePPTo0QMAkJSUZBJK5xQfH49z586Z/DJHUBB7JyIiIiIiIiIisleeQunsVaReXl5mQ7SMjAzExsZCJpOJoVlO8fHxSEtLsxj8Tpw4Eb/99pvFfYwePRqjRo0CYBqsXbhwAZMmTYJMJsOxY8dQsWJF8ZqlQLNevXqYNm0apk6dirCwMMyYMQPffvutxfVzEsJbgcFgwKBBgzB06FCTqtqrV68iKCgIcXFxkMlkWLhwIRo3bgwAYkuGM2fOICUlBSVKlIDBYMAXX3yBq1evwtHREYsXLxY/h7p166JMmTK4d+8efv/9d7sqeN944w2sXbsWJUuWhJeXFwCIbUCcnZ2NDjtUqVTi8+R8Xa1Wmw01/fz8cOvWLat7OHHiBEaOHInSpUvj9OnT+eo/3r17dzx79gyOjo6QyWSIiYkBAMycOROLFi0Sw+zVq1fj9ddfF3+JYelnIecvOXLKHgCvXbvWatW2vYRf3tgKiUuUKIEVK1agVKlS4mcHGO9ZpVJBpVLByclJbM/h6OgIjUaDjIwMu9qqEBERERERERERFYY8hdLZK3/HjRtncuAaAJw+fRrDhw+Ht7e3xZYaY8eOxZEjRyxWeDo7O6NcuXJQKBRi4KbX6/HkyRMAMDngLzvhgL8SJUoYBdK29O7dG1euXMHevXuxZ88eNGzYEO+88w70ej2USqXVNhRC1a9g+/btuHTpEm7cuIHg4GCjsNjX1xft27fH4cOHsXz5crzxxhuIjIxEbGwsXF1dUa5cOTRr1kwMpXU6HVq3bo1bt25hxIgR8PX1FeeSSCTo1q0bUlNTc/WsTZo0Eb++ceMGHjx4AAD48ccfjeYXPsuyZcvi1KlTds9vy549ewBktezI74GYqampJu8/kFXdnZ1OpwPwvwDXUvhsK5QW5slJrVZj5syZ+OCDD/D666+bHfP06VNUqFDB4hqW5s7Oz8/P5LXs8504cQLjxo0zur58+XIsX74cALBq1Sqjz5iIiIiIiIiIiKio5CmULuj/ub+lUHrp0qUmrx04cAATJ05EnTp1UL16dYtzCiFnzr7K9vj6669x+fJlJCUlwcXFBZs2bcJ3331nMq5JkybYtm2b+P3jx4/Fr+/fv48FCxYAACpVqmRU0QpktWiYMWMGgoKCULJkSQBZhyyuXLkS/v7+OH36tFH4ffHiRTx69Aj+/v64f/++0QGGQFYg6ebmhl9++QUA0LdvX/EAQ8HDhw9RrVo1s8+8bt06AFlheVGEleHh4fjtt98gl8vx4Ycf4uzZs4iIiEC/fv0sjk9OTkbTpk3NXl+zZg2cnJzg7u6Oc+fOISgoCAAQHByM9u3bQ6vVIjMzEy4uLgD+VyGd15/lnFXxQFarlvHjx+P48ePYv38/vvzyS/Tp08doTHR0NAICAuDp6YnBgwcjICBA/FkV2qjk/KVHRkaG2fYn1ri6usLPzw+Ojo5ITk7Gw4cPUalSJXh7eyM9PV18H4iIiIiIiIiIiIpankJpW1WkhTnfpk2bAAAfffSR1XFCtam5/tO2ODs7Y/78+ShdujR8fHzwww8/AMiqEHdwcIDBYIBKpUKZMmWM7gsNDQUAPHv2DMOHD0dGRgbq16+PdevWwc3NzexaQiAtrAtktVnIGUzeunULa9eutfsZ3n33XaNQ+unTpwgMDESDBg0wY8YMVKpUyWh8t27dULp0aZv9vwvKokWLoNfrxYMNhw8fDg8PD7z//vsmPbgzMzMxceJEREZGYvPmzWYrkGvUqCF+ff78efHr7ActZm9ZYTAYAOT9Z9nNzQ27d+8GAFStWhX//PMPRo8ejcuXLwOAeOhkTqdPn0ZGRgaSk5Mxffp0BAcHY8SIEXj//fctVqF/8cUXOHbsGGQymdF+9+3bZ/SLmew/M23bthUr8/fu3YspU6agd+/eGDp0qDgmMjIyT89ORERERERERESUH3lK5PJ7yFxenThxAmFhYShXrhzeeecdq2OFQwc9PDzytFbDhg3FXtiffvopbt26hZs3b+L69etiBbS3t7fRPY8ePcKZM2cwePBgPH36FK+99prVQDonoWrX3MGIQqA6YMAAhIeHW/wjtC0R+ggL9u/fj/T0dPzxxx/o1q0b1qxZA61WK17v1KkTpk2bhg8++MCuvebHiRMncObMGbi4uGDUqFHw9PRE27ZtkZiYiNOnTxuNNRgMmDx5MsLDw5GWlib2vbYmeyhtifBLC0uHUNqiUCjw+uuv4/XXX8f169cRGBgoBtI9e/bE/v370apVK5P7+vXrh5CQEHTv3h0SiQQJCQmYOXMmunTpgsOHD5tdq1GjRggMDMSHH36IDz/8EHK5HGq12qQXe3H9uyQiIiIiIiIiIsqNPFVKZw+/pkyZgilTplgcGxUVVSDVtyqVCnPnzgWQ1YvaVg/ixMREAEDp0qXzvKZarYZCoTBZKyIiAgBQpUoVk3uGDx8OnU6HGjVqYMOGDVYD6aVLlyImJgZKpRIODg64e/cuAODatWuYOnWqeFjd7Nmzcx2e5mxLMWrUKDRu3Bhz5szBvXv3sHjxYhw5cgRbtmwRP0/hkEB7w02DwQCNRiMeeOju7m6zxURsbCy++uorAMCQIUNQqlQpAMD777+PkydPiu1LhIrg2bNn4+jRo3B0dMTcuXPx9ttvW53/9u3biIqKEr/XaDSYP38++vbta3TgpvBLi/z0so6NjcWyZcvElimOjo6YOnUqevfubfW+ihUrYuHChejfvz9mz56NGzduIDIyEuPGjcOOHTswbdo0oxYqgwYNMrr/5MmTSEtLM9l79l7Ue/bswZIlS+Dk5ITMzEwAwIYNG7B7925oNBrUr18fEyZMyPOzExERERERERER5VWeQunsvLy84OrqavJ6RkYGYmNjIZPJjMLA7OLj45GWlmbXOt9//z0iIyPh7OyMFi1aYO7cuZg8ebIYoArtGLLPDZhWMwNZhyXaY9OmTWJLiezCw8MBwKQ/s1QqhU6nQ/Xq1bF582aj1hzm3Lp1C3fv3oVSqYRcLsf9+/cBZLX/uHbtGrRaLdLT06HRaMTnPH/+PCZPnmxxTiGANKdly5bYu3cv5s6di59++gktWrSAm5sbJkyYgIMHD1rdK2D7FwxHjhyx2uc7MzMT48aNQ1JSEgCgTp064rU333wT5cuXx61bt7Br1y68//77mDNnDn788Ue4ublh9erVaNSokc09bt++3ej7FStW4N69e7h69Sq2bdsmhvUqlQoAjFp65Ma2bdswb948qNVqAFntQ5YtW5arftz169fHzp07sXXrVixbtgzp6ekIDQ3Fxo0b8e2339q8P+cvHrL/G9BoNEhNTYVWq4VMJkOZMmVgMBiQkpIClUqF9PR0u/dJRERERERERERUkPJdKT1u3DgEBASYjDl9+jSGDx8Ob29vhISEmJ1n7NixdrVjOHnypHgQn4ODA8aOHYvLly/Dx8cH/fv3B2BcJQpADHjLlStnMp9QJWtNWloaNmzYgNTUVNStWxe1a9cWr126dAlSqRSvvfaa0T3t2rXDqVOn0LJlS7sqtLP3iL5x44ZYYduhQwfMmzfP7D0PHjzAgwcPbM5tiUKhwPTp09GqVSuxvUTZsmVRu3ZtODo6wsHBAVKpFLdu3UJKSgqqV68u9s5+8uQJoqOjUa1aNTHsF6qkhapySzIyMjBixAixxUVODg4OGDlyJL766issW7YMoaGhOHToEEqVKoUNGzbAz8/P5rOlpKTg4MGDkEgkcHZ2RlpaGvr164elS5fi6tWrWLlyJUaNGgWDwYDU1FQA/+vjnVudOnXCypUr8c8//2DgwIEYO3asSTsNe0ilUgwcOBD+/v6YPn06nj59iunTp9t1b86KduHnWiqViq0+rGFPaSIiIiIiIiIiKg55CqVzViUXpgcPHuCLL74weq1Pnz64fPkylixZgi5duqB06dImofT169cBZLVKyEmobrVm/fr1eP78OXx8fIyqf+/du4fY2FjUrFlT7N+cfV9nzpzBjh070K9fP5NKamuOHTtm9P2tW7cQExODjh07Gr0+YMAAsf2FOU2aNEFKSorN9fz9/cWvJ0yYYNLKoUePHrh9+zaCgoLw1ltvAQDmz5+PDRs2YMCAAejTp4/NNQQpKSn47LPPEBoaCmdnZzg7O4vtVbILCAjAli1bEB4ejkOHDsHLywubN2+2Wn2d3c8//4z09HS88cYbiIyMRFpaGry8vDBx4kRMnToVK1euRMeOHeHl5QWNRgNnZ2eT3tv2KlOmDJYsWQKZTAY3Nzc8e/YMrq6uYtW7rRYoWq0WWq0WarUaL168QHp6OtatW4eEhIQ8hdvA/36u89onm4iIiIiIiIiIqCi8FKF0zkBZcPPmTQwZMgQpKSkYNWoUgoODAQDvvvsu1q5di/DwcHz33Xf4+uuvjeaIiopCbGwsAODHH3/EL7/8gqlTp4rXbYXSCQkJ2LhxI4CsntnZQ8K9e/cCAN544w2T+8qWLYuOHTvi2LFjmD9/PlavXm3P40Oj0Rgdcnf79m0MGDAABoMBv/zyCypVqmTXPLkRGRlpNrAXCC02hCrpvLp37x5Gjx6NR48ewdnZGatWrcLixYvNhtJSqRRffPEFBg8eDAAICgqyO5BOS0sTq+l79eqFZcuWidcCAwOxZcsW1K9fH9WrVxd7d+f32Zo1awYgq2pa6DOeV97e3jhz5gy8vLzyPIfQksPR0RFxcXFo06aNxbGbNm2y2FaHiIiIiIiIiIioMEmLewOA+VD66dOnGDBgAJ49e4ZOnTph+PDh4jWJRIKxY8fC19cXgwcPhlQqxYoVK7BixQoA/6s6Ll26NA4dOoRdu3ZBLpejRYsW2Llzp9WezAAwb948pKeno2XLlkaVyqmpqeKhdp07dzZ776hRo+Dg4IDffvsN+/bts+v5f/nlF8TExIg9gqtUqYJKlSohNTUVQUFBdlV259bAgQPx2WefIS4uzuSaVqtFQkICgKygPS+0Wi02bNiAwMBAPHr0CF5eXti6dSuaN29u9b5WrVqha9euAIAffvgBz58/t2u9NWvW4NmzZ/D09ESnTp2MrkmlUmzZsgWzZ8+GQqEQf2GR31BaIJFI4OjoCC8vL1SoUAGVKlVC1apVxT8CLy8v8bVKlSqhQoUK8PLygpOTk92HS+Z0+fJlLF26FADw4sULAIC7u7vYK7tkyZIYPny4+EcIos31gSciIiIiIiIiIioKeaqUzn5Q4JQpUzBlyhSLY20djgeY7/Hs4+ODzp07IzExEUuWLDEJ7dq3b4+mTZuK4ZrQjkKv14uH3QUGBmL16tViOwUPDw80aNDA6l7OnDmDQ4cOQSqVmoTXGzZswPPnz+Hr64vGjRubvb9mzZro1asXdu7ciTlz5qBp06aoUKGCxfVUKhVWrVoFIKsn9cmTJ+Hk5IQffvgBPXv2xK1bt7BixQqxqnnLli3YsmWL1Wew5caNG4iMjERkZCQ++eQTk8MgHz58CK1WCxcXlzyH0l9//bVYVd6gQQMsX77c7KGT5kyfPh2XL19GdHQ0Ro0ahQ0bNlhtaXHnzh2sX78eADB48GCzva09PT3Frx89egQAJj3B8+rIkSOQycz/U9JqteKBjpb6rwvjcuvBgwcYNWoUkpOT0bFjR0RHRwPICtuFtiSlSpXC2LFjxXtu3ryJp0+fws3NLdfrERERERERERERFYQ8hdLZK5u9vLzMVl1mZGQgNjYWMpnMZpuAnL2ZBV9//TVkMhkUCoXZ0M7cunv27EFERATkcjn69euH1atXixXItiQlJYmHzAUEBBgdrvfgwQPxYMKPP/7Y6jxBQUEICQnBixcvMHz4cPz4449wd3c3O/b7779HVFQU/Pz80KxZM5w8eRJAVoXynDlzMGLECMTHx4vBdvXq1VGvXj2Lax86dMjmQY4HDhwAANSpU8dsuH7x4kUAgK+vb54reOfMmYPMzExUqFABQUFBNvsca7VanDt3Du3atYOnpyeWLVuGgQMH4tKlS/jss88QHBxssf9zYmIiHBwcUKpUKfHgS2tCQ0MBwOYvKOxlKZAu7DmGDx+O1NRU9OjRA2XKlEFMTAzkcjnKly9v9Isjc6TSl+J/JEFERERERERERP9BeUrTsgfElqo/T58+jeHDh8Pb2xshISF52pyLi0uuxv/zzz9YsmQJAKB37952V+YCWX2yv/jiC0RHR8PR0RFjxowRr6lUKkyYMAFqtRq+vr7o0aOH1blKlSqF2bNnY/To0bh79y4++ugjrFmzxqTq+MaNG2Lv6mHDhiE+Pt7oeocOHbBx40a88cYb2LVrF4Cs9hbWDjo8ceKE1VA6MzNTDKUtHVYoVDgLPZPzQiqVim0lbImMjMS4ceMQFRWFc+fOQSKRoHHjxpg9ezYmT56Mc+fOoV+/fvjuu+/M/oKjdevWCA4ORmZmJpydna2u9ezZM/z1118AgEaNGuX+wV4CaWlpALLayXTt2hVz587F/v37AQC1atWCTCZDamoqgKx/E9k/hydPngDI+pkWWnwQEREREREREREVpTyVS+p0OrE3rqUq57wICwvL8706nQ6TJk3Cs2fP4O7ujtGjR1sdP2bMGGzatEkMgk+ePInffvsNADBgwAAx0Nbr9ZgyZQpu3boFiUSCr776yq7K686dO4uhb3h4OHr16oXz58+L1xMSEjB69GhotVo0atRI7KOck3CgYm4Pl7Q0/siRI3jx4gUcHR3Nrnnx4kXcvHkTAEx6M1vy9OlTm9XZlhw+fBg9evTA9evXkZiYKIamANCjRw/MmjULDg4OCAsLQ/fu3bFp0yazPbbffPNNo/1aev6ff/4ZKpUKDRs2tLs1ybp16+zubV3YLly4IB5C2bp1ayxcuBBSqVTsdd6yZUsA/wuunz17hlWrVol/nj59CuB/hyISEREREREREREVtTyF0iVLlkRISAhCQkLsDi7tMWzYMPTv319sYZGdtVBWr9fj66+/xrlz5wAA33zzDUqWLCleN9f6IzQ0FHPnzhXX8vf3x4ABA+Dm5oZPP/0UAKBWqzF58mQcPnwYAPD++++LoZ89vvzyS7Rt2xYAkJKSYhS6//HHH4iNjYWTkxPmzJkDiUQiPqO5Z81tz2Fzh0cCwKZNmwBkBc45259kZGRg6tSpAIDGjRtbbROS3YYNG9C+fXusW7cuV3tbtmwZxo0bh5SUFJQuXRorV65ElSpVjMb27t0b69evR8mSJZGeno65c+eia9eu2LZtGzIyMiyuIbSvyP4+REdHiy1YPvroI7v2qlKpsHDhQrRq1Qp37tyx657CpFarIZfLUb9+fXz//feQy+W4fv262JLk3XffBQB4e3sjPDzc4p969eoVygGaREREREREREREtuS/Ga4FQi/ipKQkGAwGm72J4+LikJCQgISEBLRo0QIdO3Y0um4uZASy2lF8+eWXYnA8ePBgvP3220b7UKvVuHz5Ml5//XVIJBKcPXtWrHxt1aqVOHbKlClo37692P/5yZMn4qF4NWrUMDn4UNhPSkqK0TMLFAoFvv/+e3z22WcYMGCAGFADwHvvvYcbN27Az88P1apVM3o2c4Gy8Jq9Bx2aC7FPnDiB8PBwAED37t2NrqWmpiIoKAiPHz+GXC4Xw2lzhOcFsj6X0NBQJCQk2NWnWKPRiNXQQkj/1ltvmfwiIbuWLVti3759mDBhAkJDQxEZGYlLly6hV69eFtcRnl9431QqFb744gukpqaidu3aFivThV8IREVFAcjqJQ5ktSMRAvOMjAzExcWhRIkScHR0hFwuh0wmy1efZoPBAL1eD7VajfT0dCQlJaF69eom49q2bYvg4GA0aNAAzs7O0Gq1mD17NgwGA5o1a2bUB90arVaLnTt3AoDdPdeJiIiIiIiIiIgKQqGF0kJrhLS0NKxatQqffPIJFAqF2bHp6eliBSsAo1BZILSHyB623r9/HxMmTMDt27cBZFXVTpo0yei+ChUqIDIyEn379jWZs02bNqhUqZL4vVQqFdtlAFkH/e3YsQNLly5Fz549jfoVr1mzBqmpqXjw4IHYCsHNzc1kDaVSiXXr1pkN5b/44guj98RaKK1SqQDYf9BhzipYrVYr9hYuU6aMURh/5swZzJo1CxEREZDJZJg3bx5q165tMrfQ0mTVqlUIDw+HXC7HkydPcP/+fcjlcnTr1s3ivgR///23GGo7Ozvjq6++shouZ197y5Yt+PHHH3Hu3DksXrzYaggsvF/C32PGjEFoaChkMhlmzZpl8d4yZcoAyGpzcvv2bSQnJwMAmjdvLvZgDg8PxwcffGBzzzlNmTIFU6ZMsXt8WFiY2QMQ27VrJ369ePFi3LhxAwBstqwBgG3btiE4OBgpKSniv6nKlSvbvSciIiIiIiIiIqL8KrRQunr16qhUqRIiIiKwbNkyLF++3OLBahkZGWKFart27cTK4eyEkFWtVsNgMODFixcYNmwYIiMjAQCDBg3C5MmTTcLfGTNmYPny5WK4KKhSpQpmzZpl8zkcHBwwYcIEk9ddXV2xePFio/ksHaxoqUo8Z0ifM0jNTnh+ew86zBlKx8XFiZXIgYGBYnXs+fPnMXHiRCQlJcHNzQ2LFi0yqujOLjAwEGfPnsXFixdx6NAh8XUPDw+MHj0aXl5eFvclaNSoEQYNGoTTp09jxYoV8PX1tXmPQCKR4KOPPrKr9Ybw/MJ7GRQUhIiICPTu3Rt169a1eF+/fv1w8+ZN3LhxQ6ySL1euHIKCgozGSaVSuLi4wNnZGXK5HA4ODgVWKZ2WliYeVGiLm5sb5HI5OnbsaNfBlG3atMHMmTPF76tWrWrybHkhK2dff24iIqJXnfh/8+RugMKzeDdDRERERK8euXtx7+ClIDHk9gS9XLh//z4WLVqEBw8emA1as3NxcUGDBg0wceJEs20cYmNjxbD0xo0bUCqVePbsGQYOHIgPP/wQ/fr1K5RnsOTp06fw9/eHl5cX2rRpgyFDhqBq1ar5mnPRokVYu3YtWrdujfXr1xfQTo39+uuvqFevnlGAHhMTgwULFmDChAmoUKFCoaybXUZGBrRabYEekmmP9PR0o2r3vNLpdJBIJPkKoW3RaDSQy+V2jT1z5gxq166N0qVL2zV+yZIl8PDwQJMmTcSWNnkltNkx1weeiIjo38qg00GSGQMYzJ/hQURERERkleLfWeCQm5yoUEPpoqDT6YqtJ+7Tp0/h4+NTLGsTvQwYShMREREREREREZC7nKjwSj2LSHEe0sZAmoiIiIiIiIiIiCh3XvlQmoiIiIiIiIiIiIheHQyliYiIiIiIiIiIiKjIMJQmIiIiIiIiIiIioiLDUJqIiIiIiIiIiIiIigxDaSIiIiIiIiIiIiIqMrLi3gAREREREVln0OkgyYwBDLri3goRERER5ZfCDVB4FvcuihVDaSLKt+cb1kEbE1vc2yAiIvpXkpUrC8/BnwKRe4GM6OLeDhERERHlh9wdqNyXoXRxb+DfRKPRIDMzEyVKlCiwOdPT06FUKuHg4FBgcxIVNG1MLLRPI4p7G0RERP9ummRA/by4d0FERERElG//mp7S165dw5w5czB//vxiWf/MmTPw9/fH1KlTC3TeX375BQ0bNkS3bt1w/PjxAp3bXs+ePcO+ffvyNYdWq8V7772H9957D2fPni2YjeVSQkICbt68WWTrJScnY9q0aYiMjCzwuWNjY7FgwQIkJiZaHBMfH48ff/wRsbGsYCYiIiIiIiIiopfHv6ZSOiIiAlu2bIGHhwe++OKLPM+TmpqKXr16mb1WsWJFrFu3zuy1SpUqITExESEhIQgNDUWzZs3yvIfslEolVCoV7t69C4VCUSBzmvPw4UNcv34d7777LuRyufh6aGgoBg4cCL1ej3r16qFatWp5ml8mkyE8PBwGgwGZmZkFtW2bnj59ikuXLuH06dM4deoUXF1dsW/fPpQtW7bQ1x4xYgQuXbqE2NhYrFmzpkDnPnHiBNavX48tW7ZgxYoVaNu2rdH1Fy9eoF27dtDpdJBIJOjXr1+Brk9ERERERERERJRX/5pQWqlUAkC+g1uZTIZHjx6ZvZY9rM2pSpUq6N69O/bu3Yvvv/8eW7duzdc+zK1ZvXr1ApnTnN27d2P9+vVYs2YNjhw5AolEAgBo0qQJKlasiIiICPz888+YPHlyntdQKpXIzMw0+YwyMzOhVCrFNe2h0+mg1WrFzx3Iqh4+fPgwoqOj8eDBA9y+fRtJSUlG9z1//hwzZszAypUrYTAY0LVrV5trderUCePHj7d7b4IJEyagT58++P333/Hrr7+iU6dOuZ7DEqFqvmbNmmjTpo3JdXd3d/j5+SEsLAxnz55lKE1ERERERERERC+Nf00oLZPJjP7OKyEErlChAk6dOgUA+Pvvv9GrVy+bgXdgYCAOHjyIJk2awGAw5CpktSR7L2lvb+98z2dORkYG9u7dCwDo2bOn0b6lUik++ugjzJkzB3v27MGoUaPg6uqap3WEZ8n5GX333XfYsmULSpUqZfPzU6vV0Gg0SE5OxoQJE/DJJ5+I1yIjI7FgwQLxew8PD9SvXx+VK1dGtWrV4Ovri1q1asHHxwcAIJFI8OTJE+j1eqtrPn+et96NDRs2REBAAPbs2YO5c+eiTZs2RiF6XiUmJuLSpUsAgFGjRln8OWvbti3CwsLw559/Qq1Wiz+/CxcuhKenJ1q1aoXXXnst3/shIiIiIiIiIiLKjX9NKC0Ec/kNgh0cHCzOIYR6iYmJcHR0hFKpNKpkbtKkCfbt24caNWoY3afVapGZmQm1Wo2SJUvmaj9SaVbbb7lcXmjtO3bt2oXnz5+jZMmSZitqAwMD8f333yM5ORk//fQThg4dmqd1hGcR/s5Oq9UiLi4uT/MKsge+ly9ftis8l8vlUKlUuHLlClxcXIyuLVq0CGvXrrVaIW/L559/jqNHjyIqKgo7d+7EgAED8jyXYMeOHdDpdKhSpQrat28PAIiKisJvv/0GlUqFwYMHAwCaNWuGH374ARkZGbh58yYaNWoEvV6PHTt2IDU1FU+ePMGsWbPyvR8iIiIiIiIiIqLceCVC6bi4OLMtCsyJiopCrVq1rI754IMPMHPmTIvXzYWmwP8qfFu1amXXXnJq1qxZrtt6CAF59orpgpSamopVq1YBAIYPH24SzAKAi4sLhg4dikWLFmHjxo3o27dvnqqlhfc1Z+j/6aef4qOPPoJCoTB6769cuYKRI0cCAH7//XfI5XKxbYdKpYK7u7vRPNnDY3v3J4TStsbkJPxiQqFQwMHBweLnU6ZMGQQFBcHT0xPdu3e3uIbBYIBOp4NGo4FKpYKDgwNKlChhMk6r1WLnzp0AgN69e4vv5cOHDzFz5kwolUoMGDAAMpkM9erVg1QqhV6vx6VLl9CoUSM8ePAAqampAFCg7USIiIiIiIiIiIjs9UqE0tkrhL28vMwGjhkZGYiNjYVMJhPbM+QUHx+PtLQ0my0ULIXSAl9fXyiVSiiVSruql7VaLTQaDSpWrGj2+l9//YWgoCA4OTlBJpNBKpWKYWNaWhqArL7LDRs2tLrO77//Djc3N5v7ye6HH37AP//8Ax8fH/Tp08fiuIEDB+Lnn39GREQEVqxYYfMwSXPPJIShkydPhkKhEMPlwYMHG7XhEGQPZT09PW1+bnmpkrenCtrcmLz8YmLSpEl2j+3ZsyfmzZtn8vrx48cRHx8vjhHUrl0bAKBSqRAeHo46derAxcUFNWrUQFJSkvjeXbt2DUBWaN+iRYtcPwMREREREREREVF+vRKhdPZQcNy4cQgICDAZc/r0aQwfPhze3t4ICQkxO8/YsWNx5MiRfPedPnTokNH3L168MKnaPXLkCF5//XWLAXl2Op0Oz58/t9m7OD093eI1Nze3XAfSN2/exKZNmwD8Lyi2RKFQYOLEiRg9ejS2bt2Kbt26iUGoOdaeKSYmxuh7W5XK9spLKG1PBbq1eaVSqVjhbe3zKQgGgwErV64Uvy9VqpTR115eXkhISMCNGzdQp04dAMDGjRtRunRpcdyVK1cAZPWbLqx2MERERERERERERNa8EqF0QbeusBVKSyQSxMXFie0N1Gq12XF6vR7jx4/HhQsXcPjwYTEk1Gg0mDFjBl68eIGdO3eifv36Vtdr0qQJzp07B4VCAblcLv4BsiqZv/vuO9StWxd79uwxuXf58uVYsWIFypYta/O5s1OpVJgyZQp0Oh3atGkDf39/m/d07twZrVu3xrlz5zBu3Djs2bPHbLsPAKhXrx6OHDmCkiVLwtHREXK5HK1atUJSUhI2b96MJk2aQK/XIyMjI9+/JCgOv/32G0qVKmUU7L711lt4/PgxZs6ciXfffdfq/b1798aDBw8wbtw49OvXDzqdDgaDAWq1Gmq1Go6Ojib3HDhwAHfv3rU4Z4MGDfDrr7/iwoULYtV79kAaAM6fPw8Adn3eREREREREREREhcF6n4qXhK12GgU9n8FggFarRUREBCIiIhAbG2txnlKlSuH58+f45ptvxNd///13JCUloV69ejYDaSCrCtnLywvu7u5wdnY2qgx/9uwZgKy2JeYkJycDMA0fbZkzZw7u3r0LZ2dnTJ8+3e77FixYAC8vLzx69AhBQUHQarVmx7m6uqJ69erw9PQUW3gIJBIJZDIZFAoF3N3dLQbbBUWv10Oj0SAtLQ3Pnj2zuOfcKFeunEmlcevWrQEAd+7cgYuLi8U/er0ejx49AgA0b94crq6ucHd3h4eHB8qUKYOKFSuafJ6pqalYtGiR1T117NgRAHD27Fmz1ef3799HXFwc5HK53T3aiYiIiIiIiIiICtorEUrnpS1DfhgMBlSoUAHh4eEIDw/H7t27ja4LAadarca4ceNQsWJFHD9+HCdOnAAAbNmyBUBWu5CMjAycOHECJ06cgEajMbueTqfDzp07zVZkJyQkAMg6MM+cpKQkABDbhxw+fBgZGRlWn2/Xrl3iYXlffPGFSa/r+fPn48GDB2bvLVWqFBYvXgwHBwecPXsW48aNs/hcxalWrVrin9deew1169ZFo0aN0LJlSzx58qRQ1hRCaaFvsyVXr16FXq+Ho6Oj2GbDllmzZiE+Ph5169a1OKZ9+/aQyWRIT0/H2bNnTa6fO3cOwP+CcCIiIiIiIiIiouLwyoXSU6ZMMQochT/Dhw8HAERFRZm9XqtWLRw5csSu9XQ6ndXr27ZtQ6NGjbB06VI4Oztj5syZAIBvv/0WV69exV9//YUmTZqgZcuWSE9Px8iRIzFy5Ejo9Xqz8x0+fBjTpk1D586dcevWLaNrERERAGDxkEShUrpEiRL48MMPMW7cOGzcuNHi3s+ePYsZM2YAyKqs/fDDD42uP3r0CBs2bMC7776LFStWmJ2jefPmGDVqFADg2LFjGDp0qBiO50Z6ejp27NhhM0TPi5YtW4p/mjRpgvr166N27drw9fUttF7KzZs3h7OzM27fvo2nT59aHHf06FEAQIsWLew6aHH79u3Yt28fZDIZJk+ebHGch4cHmjZtCgDYv3+/yXWh13qXLl1srklERERERERERFRYXrlmvl5eXmarPDMyMhAbGwuZTGbxcMH4+HikpaVZnV+r1cJgMFgdI7SbEP5u1aoV3nvvPezfvx/Dhg0DAAQFBQGA2BtYKpVCqVSazGUwGLB27Vpx7SpVqojX9Ho9Hj9+DACoXr262b0IobSbmxtee+01XL16FevWrUPfvn3h4eFhNPbcuXMYNWoUNBoNKleujPnz55vM9/PPPwPIOlyyW7duFt+Dzz77DMnJydi4cSP++OMP9OjRAzNnzrSrLURoaCgOHDiA48ePIzk5Ge3bt4eTk5PN+3JDOMCxKDk7O6Nbt27YuXMndu/ejbFjx5qMycjIwLFjxwBk9ZW2R8OGDeHh4YEPP/wQtWrVsjq2b9++uHDhAk6cOIEnT56gcuXKAIDIyEhcu3YNcrmc/aSJiIiIiIiIiKhYvRKhdPZK6XHjxiEgIMBkzOnTpzF8+HB4e3uLFaE5jR071ma1tLlevDkJ/ZGz90mePHkyzpw5g+fPn6N169Zo1qyZ0RhLhzWeOnVKPLxuzJgxcHZ2Fq/du3cP6enpAABfX1+z9wsVym5ubujbty9+/vlnpKWlYePGjUah6IMHDzB8+HBoNBp4eHhg1apVKFGihNFcaWlp4mGKn376KSpVqmT1fZg8eTKUSiVWrVqFkiVLWqzmzszMxIULF8T3Njg4GEBWqP/uu+8WeCBdnPr06YOdO3diz549GD58uMmz7d27F2lpaShTpgzatWtn15x+fn4IDg5G/fr1kZmZaXWsv78/qlSpgsePH2P9+vViFf+hQ4dgMBjQrl07eHp65unZiIiIiIiIiIiICsIr0b7DVuVyQRJaScTFxaFLly7o0qWLWPUsEA5KzH5gonCIHZDVQiTnYXrm+mLr9XosW7YMAFCjRg0EBgYaXb948SKArOpwSwFx9vYdFSpUEKubt23bhtTUVHFc9erVsWTJEpQoUQKrVq1CtWrVTObavn07Xrx4gbJly2LIkCFm18tp7Nix+Oqrr7Bu3TqjOcPCwrBu3Tp88sknaNasGYYPHy6+t23btkVwcDAuXLiAxYsXw83Nza61XgWvvfYamjVrhoSEBKxatcroWkZGBlauXAkgq6I5+y81bGnatKldbUekUikGDx4MICsAv337NjQaDXbs2AHA/upsIiIiIiIiIiKiwvKfDKWt9Yx+8eIFgKxWGo8ePcKjR48QFRVlc87Vq1cjMjISEokEjx49EiuOrfnll1/EKunx48ebVFMLbR6aN29ucY7s7TsAYODAgQCAlJQU7Nq1y2hs586dcfz4cTRs2NBknrS0NKxbtw5AVtBsrnpZp9OZ7Ys9YMAAlCxZ0ui1ffv2YeHChTh37hx0Oh3atm0rtjL55JNP0KlTJ7PtTP4NJk+eDKlUig0bNojtVwBg/fr1SEhIQKlSpTBgwIBCWz8gIAA1atSARqPB5MmTsX//fsTExKBGjRp2tVchIiIiIiIiIiIqTK9EKF3QrIXS8fHxALKqecPDwxEeHo7du3dbne/p06dYt24dlEolvv32WwBZLSqstVpQqVRYvnw5AKBx48bo0KGD0fUHDx6IldJdu3Y1O0daWho0Gg0AiK04XnvtNdSpUwcA8OOPP5qEyDnDY8GGDRvw/Plz1K5dG++9957J9ejoaAwaNAhbtmyx+EzZ9erVC+XKlcP48eNx5swZrFmzRgyli4NOp8OOHTvEdhaFqU6dOggICIBarRZ7b9+4cUOsnJ4wYYJYVV8Y5HI5ZsyYAYlEgjt37uCbb74BAAwbNsxsxT4REREREREREVFReiV6SmcPVqdMmYIpU6ZYHBsVFWXzMDghyDVHCKXLli1r9/5mzJgBlUqFUaNGISAgAPv27cNff/2F7du3o2/fvmbvcXBwwODBg7FixQqMHz/e5PrKlSthMBhQsmRJtG3b1uwcQpU0AKMWGL1790ZYWBgiIyPxxx9/oHXr1lb3HxcXhw0bNgAAJk2aZDa4/PHHHxEaGoqbN2/C39/fYv9oQa1atXDixIlctagoDAaDAb/++iuWLVuGBw8eoESJEpgwYYJR725LhKp5S/3ArZk8eTIuX76MBw8eYPTo0YiJiYFGo0Hr1q3N9kQvaE2aNEGvXr2wa9cuaDQa1KpVy+rBlUREREREREREREXllQils1c2e3l5wdXV1WRMRkYGYmNjIZPJ4OPjY3W+nAf8Zffw4UMA9ofSu3fvxtmzZ1G5cmUMHToUADBixAj89ddfWL9+PXr16mX2PplMhoEDB6JXr14mVbMXL17EoUOHxLnkcrnZOYTQFDAOpbt164YjR45g6NChaNWqlc1nWLBgAdLT09GuXTu0bNnS7JjPP/8cf/75J8LCwjBt2jQxxLamOANpIYz+4YcfcPv2bQBZn3u/fv3MtiARHD16FFevXkVsbCxOnToFwHJ1uTUlSpTADz/8gPfffx9//vkngKyfqfnz5+fhaXLvxYsXuHPnjvj9w4cPsWPHDvTp06dI1iciIiIiIiIiIrLklQilsx8aOG7cOLOVpqdPn8bw4cPh7e2NkJCQPK8VHh4OAGYPAswpMjISq1atgkQiwaxZs8QeyS1btoSfnx8eP36MW7duWZ0jZyCdkJCACRMmwGAwoFatWlZDxKSkJPHr7EG7q6srtm7danP/AHD+/HkcOnQIcrkckydPtjhOoVBgwYIF6NGjB86fP4+9e/cWScVvbty/f1/8ulu3brh37x4AoHTp0hg4cCD69u1r8guNnP3Kq1atis8//1z83sPDA/7+/nnaT3JyMlxcXJCSkgIAUKvVuHfvHkqXLp2n+eyVkJCAIUOG4Pbt23B1dYWvry+uXr2Kb775Bnfu3MGXX375r+3nTUREREREREREL79XIpTW6XSoWrUqAOtVzrkVFhYm9l8WCNWlvr6+Nu93cXFBzZo1UbduXZPDCCdPnoxKlSrlKoCMi4vDp59+itjYWCiVSsybN89ilTSQFYoDWe0lPDw87F5HkJiYKLZCGTx4sPge55ScnIy4uDjExcWhQYMGuHjxIubPn4+2bduiVKlSuV63sGQ/XPLevXvw9PTE8OHD0adPH4shbPZfeACAn58fevbsCS8vLzRo0AAtW7a0q9VHdnq9HuvWrcN3330HrVaLOnXqwMXFBaGhoRg8eDB69+6Nzz//PE8V2LZcuHABEydOFA9UXLduHWrUqIGJEyciJCQEO3bswJ9//ok5c+agSZMmBb4+ERERERERERGRLa9EKF2yZMl8VT9bMmzYMFSpUgUff/wxOnbsiKdPnyImJgaurq6oUqWKOC5ncCn0pPb09MTatWvNBsdCGwyVSmXXXn777Td89dVXSExMhFQqxbfffovatWtbvefYsWMAgOrVq0OhUNi1jiAiIgJDhw5FXFwcXFxcUKFCBaxZswaJiYlITExEQkIC4uPjER8fj/T0dJP7k5KSsGjRIsydO9fuNa0dMGmOtYMizZk4cSIuXrwIBwcHDBo0CJ988onZVi/ZmesvPm/evFytK1Cr1di/fz/Wr1+PR48eAQAGDBiAiRMnQiaTYfXq1VixYgV27tyJAwcOIDAwEL1794afn5/da+Ss7BY8e/YM3333HX7++Wfo9XrUqlULK1asEFvZLF26FFWrVsWqVavw+PFj9O/fH/7+/hg6dCjq1auXp+clIiIiIiIiIiLKi1cilLaHcDhfUlISDAaD2cP6souLi0NCQgISEhLQokULdOzYESdPngQANGvWDA4ODvj7779x4sQJnDhxAsD/+kxnD6mzV26r1WpkZmZCpVKJfwutGyyFiU+ePMHixYvFgFmpVOLbb7/Fu+++azQuNjYWISEh0Gq1eP78OS5fvoyrV68CALp27Wrfm/T/4uPj8e6774qBeVpaGqZNm2Z2rFQqRbly5eDj44PKlSvDx8cHkZGR+Pnnn/HLL7/gww8/RP369c3eazAYcOfOHSiVSjx8+FB8L+wJ0NPS0nDkyBEAWZ+tVCq1eY+fnx9Wr16NWrVq2V2FnPMXDnlx584dHD16FHv27EFCQgKArEr7r776yqhH94gRI+Dv748ZM2bg4sWL+PHHH/Hjjz+iSpUqaNu2Ldq0aYPGjRvDycnJ4lrZg32dTofo6Gj8/PPP2L59u/j+vvfee5gxY4bRPFKpFJ9//jkaNmyIKVOm4J9//sGvv/6KX3/9FTVr1kTnzp0xatQom/9uiIiIiIiIiIiI8utfE0oLgXFaWhpWrVqFTz75xGL4mZ6ejrVr14rfv/3229Dr9di1axcAoF27dgAAb29vbNy4ESqVCq6urvjkk08AAKmpqQCAVatWYf369WIIbSl4BkzDT4PBgBkzZuDnn38Wg0Zvb28EBwebrVz18vLCnj17cPfuXaPXmzVrho8//tjiuuaUKVMGnTt3xsGDBwFkhb7ly5dHtWrVxOC5SpUq8PHxgY+Pj8n7qFKpcP78eURFReHbb7/Fzp07za4jkUgwbdo03LhxQ3xNoVCgevXqFvc2depUHD16VHyPgayA11obk+wsHdRoSV5CaYPBgN27d+PKlSu4cOECYmJixGtlypTB0KFD0adPH7MHPfr6+uLHH3/EqVOnsGbNGly9ehWPHz/G48ePsXnzZkilUlSsWBFDhgzB+++/b3ZtwYsXLzB06FDxcM7SpUvjm2++QadOnSzuvW3btjh8+DBmz54tHqZ59+5djBgxgoE0EREREREREREViX9NKF29enVUqlQJERERWLZsGZYvXw5HR0ezYzMyMsRwr127dqhWrRqSkpLg6emJEiVKiFXKZcqUwcCBA+Hu7o6AgACx+vb58+cAsgJNhUKBkiVLwsXFBc7OzuIf4XtHR0ds3LgRBoMBarVaDHglEgmGDh2K69ev49atW+jcuTNmzJhhscLXwcEBffv2xcyZM1G5cmU0bdoUnTt3RuvWrfMUJn7yyScoV64cWrVqhbp169psc5GdUqnE559/jokTJ8LNzQ0pKSkWe323adMGN27cgFQqRd26dTF8+HC4ublZnHvAgAHiLwcAoGbNmpg9e7b9D5YLBoMBer0+1/dJJBIolUrs3btXfK127doYOHAg3nnnHbsC9A4dOqBDhw64c+cO9u/fj5CQEERHR0Ov16NEiRLo0aOH2fuyt4PR6/UIDg5Gr1698MEHH+Czzz6z+t4KPD09sXjxYvTu3Rvz5s1D1apV8fbbb9t+cCIiIiIiIiIiogIgMVgr733F3L9/H4sWLcKDBw9s9nJ2cXFBgwYNMHHiRKMg+M6dOzZ7/KrVajg4OMDBwcHmnlQqlVj5fOnSJZPwNikpCRcuXLCrBYdarYZWq831wXuFQa/X46+//rJZmRwVFYXo6Gi89tprdgffK1asQNWqVdGoUSOxAv5lNG3aNJQpUwZdu3a1Wv1tr7CwMJw5cwZt27a12E/84cOH4s/KoUOH4Ovri+TkZLvCaHP0ej3S09Nz9UuJ7Dp27AgA2N2vD7QxsXmag4iIiKyTlSsLz8GfAuHLgYzo4t4OEREREeWH3B2o3BdwrVzcOylwQk4ktEi25l8VShNR0crNf2yIiIgo7ww6HSSZMYAhdwdHExEREdFLSOEGKDyLexcFLjc50b+mfQcRERER0b+VxMEBcKlY3NsgIiIiIioQ0uLeABERERERERERERH9dzCUJiIiIiIiIiIiIqIiw1CaiIiIiIiIiIiIiIoMQ2kiIiIiIiIiIiIiKjIMpYmIiIiIiIiIiIioyDCUJiIiIiIiIiIiIqIiIyvuDRARERERFQWDTgdJZgxg0BX3VoiIiIjov0zhBig8i3sXxYqhNBHl2/MN66CNiS3ubRAREVkkK1cWnoM/BSL3AhnRxb0dIiIiIvqvkrsDlfsylC7uDRDRq08bEwvt04ji3gYREZFtmmRA/by4d0FERERE9J/2rwqlr127hgMHDgAAxo0bB1dX12LeUcH4/vvvkZycjA4dOqBly5bFvR3KBX52RERERERERERExl65UDouLg7e3t5mr0VGRmLbtm0AgIkTJ+ZrnV9++QVdu3aFo6NjnufQ6XT466+/4OvrCy8vrzzPc/DgQTx58gSVKlUqkGCzSZMmSElJsXh99OjRGDVqFJKSktC8eXOrc0kkEty5c8fi9WnTpiE0NDTPe83OYDBAr9dDrVZDrVbjwoULBTJvYXqVPzsiIiIiIiIiIqLC8MqF0oMGDYKDgwN69eqFfv36QS6Xi9eyB8hKpTLPayxcuBDr1q3DunXrsHjxYvj5+dm8R6PRICIiAvfv38edO3fw999/4+rVq0hNTUX79u2xcuVKSCSSPO1HeJb8PFN2jo6OSElJwfDhw41ef/ToEY4dOyau4+zsDABwd3dHnz59TObZsGEDpFKp1bWSkpLw6NGjAtl3dg4ODmZff/jwIZycnKBUKiGVSm3uzxYnJyejn7HcepU/OyIiIiIiIiIiosLwSoXSz549w8OHDwEAf/75JwYNGmR0XaFQiF/nJ3CrVKkSnJ2dcf/+ffTu3RszZ85Ez549ERMTg1OnTkGlUuHFixeIj49HXFwcIiIiEB0dDZ3O+CR3BwcHVKpUCRqNBn///Tfq1auXp/3IZDJxvoIgvE9jx441ej0kJMQo2BTWc3d3NxkLANu2bbO5JyHQXb58Od5666187dtgMECn00Gj0SA9Pd3smK5du+ZrjZyCg4PRqVOnPN//Kn92REREREREREREheGVCqWvXLkifv35558X2joffPABmjVrhqCgIISHh2Py5Mm4ffs2Jk2ahM2bN+PJkydG452dnWEwGABktU94/fXX4ePjg4oVKxoF5XklVFjntdI6JyEotSQ3YaWtPRVU8Hnr1i388ssvKF++PD7++GM4OTkVyLy2CBXHefUqf3ZERERERERERESF4ZUKpY8dOwYAaNSokV0tNfKjatWq2LFjB8aOHYvff/8dfn5+kMlkGDZsGKKjo+Hj44NKlSrBx8cHXl5eaNWqFRITE9G1a1dUr17d7nWmTp2KXbt22TV2ypQpmDJlitUxZ8+eRZkyZayOUalUVq+r1Wqjv/MzV/bgU+iF7OjoaLYlhlqtRlpaGjw8PEwC0+joaGzZsgVNmzbFxx9/bHG98+fPw9HREQqFAg4ODkYh7ffff4/g4GA0atQI27dvtzjH/fv38c477wCA1dYd//bPjoiIiIiIiIiIqDC8MqF0SkoKjh8/DgB45513kJycbDImIyND/Nrcdb1eD51Oh8zMTMhkMosHJgqcnZ0RHByM33//Hf7+/gCAwMDA/DyGCaHdgkwmg4+Pj9kx0dHRUKlU8PLygqurq8l1jUaDyMhIALDrYMbMzEwAQK1ataxeF4LNiIgIi2NtVe5mrxTetGkTgoODbe7vypUrcHFxMXpNqDi3VXleunRpm/Pbkr0Ni7U2MP/2z46IiIiIiIiIiKgwvDKp1KFDh8TAbdasWZg1a5bV8U2bNrV6vWPHjvjhhx9sriuXy8VAujAIwaC3tzdCQkLMjgkICEBYWBjGjRuHgIAAk+sPHjzA22+/bTSfNQMHDrRaJVupUiVkZmZCLpebHKiXnp5u1NLC3hYQEokELi4uqFWrFlxdXSGXy43uNRgM0Gg0SEtLMxsECxXLRdEHWa/Xm6xrzn/lsyMiIiIiIiIiIipIr0QordfrsWXLFgCAm5ubxX7CarUaz58/BwCzVdBarRZqtRoqlcpiBey2bdug0WgwcOBAo9AuLS0NWq0WTk5OJm0hbNFoNFCpVFCpVPD09DRau6BDVnuCzc8++8zq9WnTpmH8+PHw8fHBzp07UbJkSQDA/PnzsXfvXixcuBAdOnTI1b4kEgkGDx6MwYMH5+q+7PcD+TvA0l5arVb8WqiGNue/8tkREREREREREREVpFcilD548CAePnwIANi6davFftJnzpzBkCFDxK9z68qVK/j222+h1Wpx8uRJzJ07FxUrVgQAbNiwwa7WE0LVqyUXLlwQg0Kg4ENWa/NlZmYiIyMDSqUSCoXCYggaFxcHg8GAGjVqGO31zTffxMGDB3Hx4kW0b98eBoMBWq0WKpUKOp0OHh4eFtfOTVXu1atXcfv2bbEvtMFgED//2NhY7Nq1C2q1Gg0bNkTt2rXtntde2SulrbUL+a98dkRERERERERERAXppQ+l09LSsHTpUgBAq1atCvWAw5o1ayIwMBA///wzQkND8d5772Hq1Kno2bMnlEolSpUqBUdHR7OV0hEREdDpdKhYsaJJywchAMzIyDAJHoui8ldw7NgxTJo0ye7xp06dMtuPeMOGDdiwYYPRa82aNcPWrVstziU85/Dhw3H69GmL4/r16wdPT0+LvwC4c+cOpk6dCgD4+uuvCyWUzt5T2lql9H/lsyMiIiIiIiIiIipIL30oPXfuXMTExAAAhg0bVqhrubq6YubMmejevTu++OILREZGYvLkybh69SpmzpyJoUOHWry3VatWSExMxJo1a1C9enW71xQqiKOioiweSCeYMmUKpkyZYvfcOZUoUQK1atWCo6OjWIWcs4I5IiICUVFRRq81aNDAbMsUnU4HvV6PzMxMsaLcEiHAFXoalylTxugww7S0NMTHx8PZ2RmtWrVC5cqV4ebmBplMBqlUijt37mD+/PmoX78+hg8fjszMzEL7BUX2UNpapfR/5bMjIiIiIiIiIiIqSC91KK3X6/HWW2+hRIkSSExMRPPmzYtk3SZNmmD//v345ptvcOLECQQGBhb6mjKZDD4+PmavRUdHQ6VSwcvLC66uribXNRoNIiMjba7RoUMHq/2Ejx8/ji+++AIA8NVXXyEuLg7r1q3DixcvMH78eDRr1szOp/kfg8EA4H/9l4Uq8q+++gpdunQRxx0+fBjjxo2DTCZDo0aN0KhRI6N5hPs9PT0LvSeyvZXSgn/rZ0dERERERERERFQYXupQWiqV4s0338Sbb74pvpaUlITk5GQolUoolUqjFgoZGRni18nJyUZzabVaaDQapKeno3LlyjZbL7i6umLRokWIjY1F2bJlC+iJLPP29kZISIjZawEBAQgLC8O4ceMQEBBgcv3Bgwc2e1lbotFo8Ndff2HTpk04e/YsZDIZpk2bhn79+gHIqtBdtmwZPvroIzRu3BjdunVDs2bNUK1aNbv6RGdmZgL4Xxht6x4hfI6NjcW5c+fQtWtXo4rqoqDRaMSv7Qml/62fHRERERERERERUWF4qUNpc/bt24e5c+faHNe0aVOL165cuWJ30Hn37l38+eef6NGjh71bLFZCZXJOCQkJePr0KdLT0xETE4OnT5/i5s2buH79OlJTUwEA9evXx9SpU1GvXj3xvuHDh6Nu3br45ptvcPnyZVy+fBlAVluLMmXKwNvbG25ubtDpdHjnnXdM3ifhFwXC+529Ctna/j/77DOEhYXB09MTHTt2zP0bkQ+PHz8GkNVqxJ5QuqC8bJ8dERERERERERFRYXjlQmmJRAKFQgFHR0eTSmm1Wo3nz58DyKpezU6olM5eTW2PtWvXIjQ0FPHx8Rg6dCh++uknzJgxw+J4S1Wvu3btMgoMBZaCyLzS6/VmX8/IyMCgQYOgUqmMXi9btizefvttvPfee2jSpInZe1u3bo1jx47h9OnTOHDgAP7880+8ePECkZGRYusJJycnLF682OTelJQUAP8LpYUq5KCgILNrCdf9/f0RFhaGs2fPFnooHRoaimvXrgHI6m29Z88eAICvr6/V+/7tnx0REREREREREVFheOVC6YEDB2LgwIFmr505cwZDhgwRv86vGzduIDQ0FFKpFO3atQPwv4P6XF1d4eXlZXOOJ0+eQK/Xw9HRMd/7sYdWqzVb3VupUiV07doVt27dwmuvvYbatWujZcuWNg/oEzg4OMDf3x/+/v7Q6/V49OgRHj58iKdPnyIuLg6enp5wc3MzuS8uLg5AVisJAHBzc0PVqlUtriMcytehQwd89913CA0NtWt/+VGqVCmzoWzv3r0Lfe3sXrbPjoiIiIiIiIiIqDC8cqF0UVq1ahUAoFu3bqhZsyaArEPtAKBTp06YN2+ezTmaNGmClJQUsadyTkI7i6ioKJsh45QpUzBlyhSrY7L3Q85p/vz5AIDmzZtj//79FseNGTMGI0eOBADUrl3bassNuVyOmzdvmr1mMBgQHx8PhUKBUqVKAQBmzpwJtVqN1NRUlCxZUhx76dIl+Pn5iYcB1qpVC+7u7nj48CFevHhhcf2CUL16dVSrVg0pKSnw8vJC9erV0bp1a5vtLP7Nnx0REREREREREVFhYShtQVhYGE6dOgW5XI7Ro0eLr9s6INESIczOSWjZIJPJ4OPjY3ZMdHQ0VCoVvLy8xNDWEls9m4GsVhpJSUno2bOn0etRUVEIDQ0Vq8GBrP7DUqkUnTt3Npnn0KFDVivA4+PjodFoUKVKFfFgvfPnz2PChAno0KED5syZI+55yJAhyMzMxKFDh1C9enVIJBLUr18fly9fRnR0tM1nyq+jR4/m+p5/82dHRERERERERERUWBhKW7Bw4UIYDAYEBAQYBY5CuJpblu4TqmO9vb0REhJidkxAQADCwsIwbtw4BAQE5Gn97ISAPGeld0hICEJDQ42quhUKBdzd3c1WhZ84ccJiBTgA3Lt3DwBQoUIF8bUqVaogKSkJx44dw7Rp06BUKnHv3j2kp6ejXr16qF69ujj2q6++QtmyZeHo6Ii//vorbw9biP7Nnx0REREREREREVFhyVvZ77/ckSNHcOHCBcjlcgwfPtzoWl5DaUuEHsuWKm3zIiYmBs+ePbN43Va1d/brCoXC7rE5Xb16FQDg5+cnvlahQgU0b94cKSkpOH36NADgzz//BAC88847RvdXqVLlpa7m/Td/dkRERERERERERIXllaiUzszMhFKpLPBAWKPRwGAwGIV3//zzD2bNmgUA6NWrF8qXL290j9Cy4ddff8W1a9dsrpGWlmb1+pgxYzBmzJhc7ty633//HUuWLEHPnj0xYsQIeHh4GF03GAwFup4l58+fBwA0bdrU6PW33noLf/75J+7du4cuXbrg3LlzkEgk6NKlC2JiYnDr1i34+vqiUqVKdq2j1WqRnJwMFxcXyGQyODg4FNgz6HQ6aLVapKeno0SJEkZtWP7Nnx0REREREREREVFheSVC6Y4dOyIxMRFyuRwymcxiOJ29J2/Dhg0tzicEjUIv4wkTJgDICvwmT56MZ8+eQS6XY9iwYSb3CqF0amoqUlNT7X4G4b68EJ73+fPndo0PCwvDixcvsGPHDnz++ecm14X3ydLhfNn3qtPpEBERYXGspWrc6OhoXLt2DRKJBI0aNTK61rVrV/j4+CAtLQ1Lly7FxYsXIZVK0a1bNyQnJwMADh48aHSPWq02/7AAnjx5grffftvi9ZyuXLli82BCcw4ePCgeeGmvV/GzIyIiIiIiIiIiKkyvRCgtlUrh6OgIpVIpHt6WH0IonZmZaTTXpUuXcOnSJQDABx98gHLlypncq9VqAQA9e/Y026s3pyZNmiAlJUXsP5wXZcuWxc2bN/Hzzz+jffv2qFatmsWxt27dwq+//gogK8x3cnIyGSM8Q87WJI8ePcKxY8eM9qpSqeDu7o4+ffqYzLNhwwZxrpx2794Ng8GAFi1awN3dHWfOnMH69esRFxcnHv6XnUQigaurq9hXulKlSnj27BkOHTqEtLQ08ZletSD1VfzsiIiIiIiIiIiICtMrEUqfPXu2SNZp2rQpTpw4gQULFpiEfoLMzMw8zZ2RkZHnfXXo0AEnTpzA48eP0bVrVyiVSrMtKjQajRhKSiQSDBo0yOpexo4da/R6SEgIjh07ZtRyRKVSoVSpUiZjAWDbtm0Wn+vUqVMAgAEDBgAA6tSpg4sXL0Kn00GpVKJRo0aoV68eatasCV9fX1SvXh0uLi5GcyiVShw4cAB///23+Frjxo1N1ipfvjx27dqF0qVLw9HREQqFosBavWRv31GmTJlc3/8qfnZERERERERERESFSWJgk9pcSUtLQ0pKCpycnODu7l4kaxoMBqxduxZHjhzB8+fPrfYVlkqlKFeuHD766COLLS3i4uJgMBhQtmzZfO3L2jwZGRlYvnw5Jk6cKFaj79u3Dz4+Pnj99dftrnjetGkTdu3ahdq1a6Ndu3bo2rXrK3VA36v42eVGx44dAQC7+/WBNiY2X3MREREVJlm5svAc/CkQvhzIiC7u7RARERHRf5XcHajcF3CtXNw7KXBCTnTy5EmbYxlKE1Ge5eY/NkRERMXNoNNBkhkDGHS2BxMRERERFRaFG6DwLO5dFLjc5ESvRPsOIiIiIqL8kjg4AC4Vi3sbRERERET/ea9OHwQiIiIiIiIiIiIieuUxlCYiIiIiIiIiIiKiIsNQmoiIiIiIiIiIiIiKDENpIiIiIiIiIiIiIioyDKWJiIiIiIiIiIiIqMjIinsDRERERET08jPodJBkxgAGXXFvhYiIiOjVpnADFJ7FvYtixVCaiPLt+YZ10MbEFvc2iIiIqJDIypWF5+BPgci9QEZ0cW+HiIiI6NUldwcq92UoXdwbIKJXnzYmFtqnEcW9DSIiIipsmmRA/by4d0FERERErzj2lKb/lIyMDGg0muLeBhERERERERER0X8WQ2l6KaxevRrz58/HnTt3CnWdnTt3on379lixYgVSU1MLdS0iIiIiIiIiIiIyxfYdVCQOHDiATp06wcnJyez1nTt3IioqCmlpaZg5c2ah7ePgwYNISEjAnj17MHjw4HzPp1ar0b179wLYWZaJEyeiY8eOBTYfERERERERERHRy4ahNBW6+fPnY8OGDahatSoWLVqEunXrGl2/cuUKoqKioFAoMHr06ELbx6VLl3Dz5k0AwPTp0y0G5Lkhk8nw6NGjfM8jUKlUdo07efIkPvvsszytMWHCBAwZMiRP9xIREREREREREeUXQ2kqdA0aNICzszMePXqEvn37Yv78+ejatat4ff/+/eLXH330kcV5DAYDdDod1Go1ZDIZTp06ZXQ9LS0NWq0WcrkcMpkMDg4OkEqlkEgkAID169cDAN566y20bdvW6joajQYqlQo6nQ4eHh4Wx0qlUkilUuj1epw8eRIVK1Y0GTNmzBgcO3YMo0aNshi6t2rVComJiVAoFBbXyq5kyZIAALlcbnZNc/755x8kJyfD0dHRrvFERERERERERESFgaE0Fbq33noLNWrUwPDhwxEREYGxY8dCrVbjvffeQ2pqKg4fPgwAcHd3R3p6usV59Ho9dDodVCqV2fB2zZo1WLVqlc39HDt2DLVq1bJr782aNcPWrVutjpHJZFCr1XbNZ4tcLrdrnKurKwCgSpUqOHTokF33zJw5E9u2bYNSqczz/oiIiIiIiIiIiPKLoTQVierVq2Pr1q3o378/0tPT0aJFCwDAjh07kJKSgjp16mDv3r0Ftp5MJhOrmCUSCTIyMgAACoUCMpn1H3udTgedTgetVmvXWg4ODvner0Aqte/sUVvPUBBrEBERERERERERFQaG0lRkypYti82bNyMmJgbe3t5Qq9XYvHkzAGDkyJH5nn/kyJEYOXKkSRX1oUOHMH78eLi5ueHIkSPw8vKyaz6dTgeNRmNzXEGGvPYG3AyliYiIiIiIiIjoVcVQmopUhQoVUKFCBQDAypUrER8fj9deew0dO3ZEYmIilEollEql2fYcWq0WmZmZ0Gq1Zvs8m7snKSkJc+fOBQB8+eWXYiB9+fJlJCcno3z58hZbeTg4ONgVEgs9q4uSPWG5JXq9vgB3QkRERERERERElDsMpalQPX36FAaDAZUqVTJ6/ebNm1izZg0AYNSoUQCyDvuzR7du3bBo0SK7xk6ZMgWJiYno0KEDevbsKb6+ePFiXL58Gf3798fXX39t11y2dOzY0er14OBgBAcHF8ha9rYWMYehNBERERERERERFSeG0lSo5syZg99//x2dOnXCsGHDUKdOHQDAqVOn4ODggBo1aohhrq+vLxQKBRwdHc1WPQvtNMqXL2/X2ps2bcKpU6dQqlQpzJ492+iaML+jo2N+Hg/A/yql33rrLTg7O5tcDw0NRVRUFPz8/PDaa6+ZnePIkSNQqVR2r5mcnAwAuHfvnt2HNgpysw4REREREREREVFBYyhNhSYpKQlarRZ6vR7Hjh3D8ePH0aVLF3z++ecYM2YMPv74Yzx79kwMdQ8dOlRga4eEhGDBggUAgLlz56JUqVJG1+VyOYD89WYWCJXHkyZNQsWKFU2ujxkzBlFRUfD398fo0aPNznH27NlchcUajQZVq1bN034LIognIiIiIiIiIiLKK4bSVGg8PDywbt063Lt3D4sWLcJvv/2Go0ePokuXLqhSpQpKlCgBrVaLlJQUi32kcysjIwNr167FqlWroNPpEBgYiIYNG4qVxQLhsD+dTmd0Ta/XQ6PRQKPRQK1Ww9PTE+7u7lbXNBgM+d53brVs2RIhISFFvi4REREREREREVF+MZSmQufr64vVq1fjwIEDuHr1Krp06SJe++ijj3Dv3j275/rmm2/Qp08fi9efP3+OlStXitXLe/bswZ49eyyOX7t2LdauXWvx+tdff43+/ftb3VN++jsTERERERERERH91zCUpiLTvXt3dO/e3eg1FxcXlC5d2maldGRkJDQaDUqUKGF1jfLly+ONN97AuXPnxNeEPtVyuRxSqRQSiQTJycnIzMyEi4sLXF1dxbFCpbRarYZGoxFbi1ij0+lsjsmvy5cvo2/fvjbH+fv7Y8WKFQCy2oYcO3bM5j19+/bF9OnT871HIiIiIiIiIiIiezCUpmK1c+dOu8Z17doVDx8+NAqQLRk5ciS6deuGOnXqoHz58nBxcTEZIwS2H3/8scU+z/bQaDRiKC0c2GhJcHAwgoOD87SOk5MTgKy2I+Z6Qut0OqhUKnh4eJjco1AozPbOFtqUsMc0EREREREREREVJYbSVKROnz6NRo0a2ezTnJNQsWzPwYSNGjVCo0aN8rS/3EpLSxO/rlSpEhwcHEzGxMfHIy0tDR4eHvD09DQ7T0REhNWKa+Fgxpo1a2L//v0m10NCQhAUFGQUwAv3zJgxAwEBASb3rF+/HgsWLBDHERERERERERERFQWG0lRk0tLSMHnyZDg5OWHu3Llo2bKl3fcKYa897TSK0j///AMgq4L50KFDUCqVJmOEquz+/ftbrMpu1aoVEhMTLa4jHMxoS/YWKPbeY+84IiIiIiIiIiKigsBQmorMjz/+iKSkJGRmZsLb2ztX9wq9pJOTk81ef/HiBXQ6HRQKBeRyudg/Oj/0ej20Wi3UajXUajXc3d1NKqGfPHkCAChXrpzZQLqg2Pss2feXl3uIiIiIiIiIiIgKG0NpKhLR0dFYtWoVAGD06NGoVq1aru4XeiULlck5TZo0Cb/99luu95WbPs/Hjx9H5cqVjV67e/cuAKBWrVq5Xjs37A2YDQZDru8hIiIiIiIiIiIqSkytqEjMnDkT6enpqFGjBgYNGpTr+ytWrAgAePDgQQHvLH/Onz8PAGjevHmhrpM9bLZGpVLl+h4iIiIiIiIiIqKixEppKnT79u3D6dOnAQBTp06167DCnHx9fQEAd+7cEV979uwZSpYsCSAr9Far1WL7DoVCYbX/9MSJE3Hy5EkMGzYMw4YNMztGr9dDp9NBpVJBrVajbNmyRtefP3+Oq1evAsjqCW1JQYTD9s6RmZlZoOsSEREREREREREVNIbSVKgePHiAmTNnAgA6deqUq8MNs2vRogUA4ObNm8jIyICTkxO6d++OAQMGoE+fPrnuUS20tpDL5XBxccnTnvbs2QONRoOaNWuKobk5Op3O6G9zMjIyAMBiYK/X6wFktQtp2LChxTWyV0oL90yfPh2zZs0yuUej0djcFxERERERERERUUFjKE2F5tmzZ/jss8+QlpYGpVKJyZMn53kuHx8f1KtXDzdu3MDRo0fRtGlTJCQkYPHixXj77bfFgxDtJQS2eQ1kVSoVfvrpJwDAe++9Z3WssIZWqzV6fe/evXj8+DEePnyItLQ0AFkHJlrbr16vR3p6utV95bxHOKjRkpz7IiIiIiIiIiIiKkwMpanQTJ48GY8fPwYAfPrpp2Jf6LwaMmQIRo8ejUWLFqFevXoAgPr16+dpXnuql61Zu3YtoqKi4OTkhMDAQKtjhRA5e2sNICsMXr16tfj9m2++CR8fH7NzCKGyn58f9u/fb3I9JCQEQUFBRmsI98ydOxcBAQEm96xfvx4LFiywGlgTEREREREREREVNIbSVGiCg4Pxww8/4MiRIxb7NudG586d4e/vjxMnTog9qvv375+nuYTWFcLfueXh4YGKFSuiffv28PT0tDp24MCBePvtt1GjRg2j15s0aYIqVaqgbt266NixIzp16mRxDolEAl9fX1SuXNns9dKlS6N169aoWbOm+Jqnpyd8fX3h5uZm9p6GDRti1KhRqFu3rtX9ExERERERERERFSSJgaehUSFLTU2Fq6trgcylVqvx3Xff4dixY2jatCm+/fZbqwcaWtK3b19cvnwZffr0wTfffJPnvWRmZloMff8LOnbsCADY3a8PtDGxxbwbIiIiKiyycmXhOfhTIHw5kBFd3NshIiIienXJ3YHKfQFX84WHrzIhJzp58qTNsQyliSjPcvMfGyIiInq1GXQ6SDJjAAMPSSYiIiLKF4UboLD+v7x/FeUmJ2L7DiIiIiIiskni4AC45O+MECIiIiIiAJAW9waIiIiIiIiIiIiI6L+DoTQRERERERERERERFRmG0kRERERERERERERUZBhKExEREREREREREVGRYShNREREREREREREREVGVtwbICIiIqJXi0GngyQzBjDoinsrRERERESvHoUboPAs7l0UK4bSRJRvzzesgzYmtri3QURERUBWriw8B38KRO4FMqKLeztERERERK8WuTtQuS9D6eLeABG9+rQxsdA+jSjubRARUVHSJAPq58W9CyIiIiIiegWxpzQRERERERERERERFRlWSr9EoqOjsXz58nzN4e3tjbFjx1q8vmPHDly7ds3qHHK5HLNmzcI///yDhQsX2lyzd+/eaNy4sdlrarUa3bt3tzmHvSZOnIiOHTsW2HyF7cCBA0hOToZSqYSDg4PZMTqdDlqtFhkZGejRowdKlixZxLskIiIiIiIiIiIqOgylXyLR0dH45Zdf8jVHgwYNrF6/fv26zTU8PDwwa9YsaLVau/bToUMHi9dkMhkePXpkcw57qVQqu8adPHkSn332WZ7WmDBhAoYMGWLx+vr167Fx40Y4OTmZBM0qlQrp6enYuHEjateuje3bt+PKlSt2r926dWubofTTp0/h7+9v95w5TZo0CZ988kme7yciIiIiIiIiIsoPhtIvkZSUFABA5cqVcfz4caNrqampcHV1tXjvxo0bMW/ePKtjAMDJyQkAsHbtWrRp08bk+uuvvw5HR0ejsXXq1MHevXtNxq5fvx4LFiyAUqm0uJ5UKoVUKoVer8fJkydRsWJFkzFjxozBsWPHMGrUKIwePdrsPK1atUJiYiIUCoXV5xMIwa5cLje7pjn//PMPkpOT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LfaUvnfvntFYIiIiIiIiIiKiosBQmgrNunXroNPp4OXlJfZMTk5Oxrp165CamorDhw8DALy9vcV7slcyL1myBBs3boSzszNWr16NihUrYujQobh+/Tq6d++OPn36YOTIkUatOQ4ePCjOUadOHcydO9eowtjZ2Rlvv/22yaGLQs9mjUYDAJg2bRocHBxQrVo1ODg42PW8QribM1gHgDFjxkCn00GpVIptOC5fvgwA+OGHH8QQ22AwQKvVIjMzE7179zYb5gvvk7BXc4SDEZ88eSKG/znFx8eLcxERERERERERERUVhtJUaDQaDaRSKd5//31IpVIAgJubG8LCwsQe0WXKlEH79u3Fe4RweM2aNVi7di2cnZ2xYsUK1K1bFwCwadMmTJs2DQcPHsSZM2fw6aefGq3Zu3dv7N69G1FRUfj+++/h6OhodL1atWpYunSp2b1m/zt7uw576XQ6o2fI7uLFi9BqtVAoFEYht7e3N+7cuSN+bzAYoNPpkJGRgTZt2phdR61Ww2AwWA2lhT3069fP5r4tHaJIRERERERERERUGBhKU6GZO3cuevXqBR8fH6PX+/TpAwcHB3Tq1AnvvPMOnJ2dxWtChW/v3r1x5swZzJ49G/Xq1ROvOzs7Y9GiRWjdujXq1q1rVGUNAI6Ojvj+++9x69Ytk2poa3KG0nkhhLvmQt4LFy7ked6chPfIUiuS7Hs4d+6cxfYdISEhCAoKsjoPERERERERERFRQWMoTYWqcePGJq/5+/vD39/f7Phbt26JX+/bt0+ssM6pR48eFtesVKkSKlWqlKt9Ci0s8hNKC+FuYVcelyhRAuHh4VbHHDp0yOY8Xbp0sTmPvWTlyhbIPERERESUe+L/LyZ3AxSWDwQnIiKil4Dcvbh38FKQGHjKGRHlUceOHQEAJ0+eLOadEBEREf23GXQ6SDJjAIOuuLdCREREtij+nb9Izk1OxEppIiIiIiKiV5zEwQFwqVjc2yAiIiKyi/neCEREREREREREREREhYChNBEREREREREREREVGYbSRERERERERERERFRkGEoTERERERERERERUZFhKE1ERERERERERERERYahNBEREREREREREREVGVlxb4CIiIiIiOhVZdDpIMmMAQy64t4KERERvSr+j707j9Op/v8//pjlumYxZrGvZUkofEJoUfYlRZlK9iQpIqTs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iIiIiIiIiIhITlEo/T/g2rVrOBwOPD09GThwYKbjf//9d+B6m4zckJiYSJ8+fYiPj+ett96ibdu2HDp0CMAInFu2bMnkyZNZt24d7dq1w263s2XLFgICAqhfv36a8z7zzDM888wzbsf++ecfIxw+evRolmvcvHkzgwcPxul00rNnT7p3757muAULFnD16lW6du3qFkhv27aNf/75hwcffJDHH3/c7ZqXX36Z5cuXM3XqVOLj4/Hx8aFly5bp1mI2mylcuHCWQul169Zl6fm8vb2NldIKpUVEREREREREJC8plP4fUKpUKebPn8/q1at54IEHMh3vCjZr1aqVK/UkJydTrVo1Vq1axbBhw5g/fz6nT5+mYsWKVKxYEYDQ0FCmTp3KrFmzePbZZ1m5ciUxMTF07drVaEmSllOnTrF9+3Y6deqU5vlr164xevRoBg8eTPHixdMcExYWxrBhw7BarXTt2jXdID8qKorp06cb14SHh1OnTh1q1apl9JXu27dvqhXLVapU4ZFHHmHnzp0AvPTSSxmuLHdxOp0AHDt2LNWmiK4+2CNGjKBAgQKYTCa3DRcdDgd2u91YKV2mTBlWrlxptFIRERERERERERHJKwql/0eUKlWK119/3fjsCjhv9ueff3Lw4EF8fHxo1KhRluZeunQpDz/8MOXLl8/S+EKFCvHxxx/TqVMnRo0aZaySLl26NFarFZPJRMmSJWnVqhWrV69m3LhxrF+/Hl9fX1599dV0542NjaVPnz4cP34cm83Gyy+/nGrM119/zZo1azh8+DCLFy9266dss9n44osvmDlzJh4eHm6bRKYlKCiIb775hh07drBjxw62bdvGxo0bjfM+Pj5GGHxzG5Tq1asboXSdOnWy9H1z9cw2mUyUKVPGOH727FmsVisAXbp0ydJcZ86cwel0Urp0aaPftYiIiIiIiIiISF7wzHyI3CnSC5JvhcPhcPsdroey48aNA673fc7K6l24Hkq3bNmSBQsWZKuGGjVq8P777xsrerdu3cpLL73EiRMnABgwYAABAQEsWbKEmJgYBg4cmO5mf3FxcfTs2ZPjx49Tq1YtQkND0xz39ttv88gjj3Dy5EnGjBljHD927Bjt2rVj5syZmEwmPvnkkwwDaQAvLy8eeughevXqxbx589i1a5fRfsTDw4OUlBR69+5N8+bN2b17t3HdvHnzmDlzpvH5vffeY+/evZl+vywWCwDlypVj3bp1xq+CBQuSkpKS6fU3cv0goEKFCtm6TkRERERERERE5HYplL5LXLp0icjISIBU7SBuhWtTQNfvABMnTuTgwYP4+/vTu3fvNK9zBeMRERHY7XZsNhtnzpwB0g84ExIS0jx+5MgRevfujdPpZMiQIVSvXp2YmBijFcWBAwfcnvXixYvGauEbnT59mg4dOrB3716efPJJZs2aZQTqf//9N4ARfJvNZj777DMeeeQRBgwYQFJSElOnTiU0NJRDhw5RtmxZFi1alK0NKOF625A+ffqwY8cOSpUqxQ8//MDMmTNp0qQJcXFxVKhQgbi4ON5++23GjRuHt7c3kyZNolmzZiQmJtKtWzfWrl2b4T1cofTNxo4dyyeffJLlWp1Op7ERZG61aBEREREREREREUmP/t7+HWz37t3Mnz+fqKgo/v77b6NFQ2Bg4G3P7Qo4Xb/PmDGDGTNmANdXKKe3Irlo0aIAXL58mcaNG+Pt7U1MTAwBAQHUrl3bGPf999/zxx9/kJCQYATDNwoLC2P06NHEx8fz7rvv8sorr9C5c2ciIyNxOp0MHz6cZcuWYTabefvtt1m6dCmzZs1i586d9OrVi4YNG2IymYDr7UAKFChAp06dGD58OF5eXvz555/069ePy5cvA3DfffcZ9y5SpAhz585l6dKlTJo0yQj7mzdvzocffpjlFeIOh4Pff/+dpUuXsmHDBqxWK82bN+f999+nSJEi3HfffTzxxBNcvXqVLVu28Nlnn3H16lUKFSrE559/zqOPPsqTTz5J9+7d2bt3LwMGDODnn39m4MCBafa7LlGiBCNHjjRCe5dmzZplWuuSJUsICwvDarVy4cIFrly5gslk4umnn87Ss4qIiIiIiIiIiOQUhdJ3sP/85z8MHjyY8+fPG8cqVapEgwYNbntuV7sH1++hoaHs2bMHDw+PDPsS169fn+eee47Nmzdz8eJFAAoWLMg777zjtgHhQw89xLBhw4zP999/P5UqVcJut9O3b182bdqEh4cHffr0oUePHsD1ntCTJ0/mhx9+wGq1UrZsWT7//HNq1KjBSy+9xMCBA/n111/p06cPDz74IPPnz6dAgQIEBgYyd+5cfH193b53FosFDw8P6tSp41aLi5eXF5GRkRQtWpQhQ4bwzDPPZOl7l5yczKhRo9iyZQsxMTHA9R7Rffv2TfVn8+effzJ06FBOnz4NQNOmTXnvvfeM0Nnf35+ZM2cyaNAgNm3axKpVq7h48SKzZ89O1eu5ePHidO7cOUs13uyJJ57gvffeMz77+/szYsQISpUqdUvziYiIiIiIiIiI3CoPZ042KpYcN2XKFH7//XcqVKhAvXr1aNq0qVv4m5OcTifJycn4+fnlyHxvvfUWFSpUoG7dutSpU8dY2RwZGclrr73GW2+9RePGjd2uCQsL47333qNt27YMHDiQgIAAt/Pr1q1jzpw5TJo0Kc3VxDfavXs39957r7G6Oy0rVqygadOmWV4d7fLLL7/Qp08fmjRpQrt27XjsscfSHOdwOBg8eDB///03gwYNyvAHCgsWLCAsLCxVwJ5TJk2aRMGCBalUqRK1a9fG39//tuds0qQJAMs6dcAWcfG25xMRERG5m3iXLEFI9x5wdDIkhed3OSIiInI3MAXBvR0h4N78riTHuXKiTZs2ZTpWobTkC6fTmW5v7ISEBAoUKJDHFWVffHx8qtA8LRaLBS8vL7y8vDIdm9H35U6UnZeNiIiIyL+R027HIzkCnKn3PhERERFJkzkQzCH5XUWOy05OpPYdki8yCl7vhkAayFIgDWRrZfvdFEiLiIiICHh4eUGBMvldhoiIiMhdxTO/CxARERERERERERGR/x0KpUVEREREREREREQkzyiUFhEREREREREREZE8o1BaRERERERERERERPKMQmkRERERERERERERyTPe+V2AiIiIiNxdnHY7HskR4LTndykiIiIiIncfcyCYQ/K7inylUFpEblv07JnYIi7mdxkiIpIHvEuWIKR7Dzi/HJLC87scEREREZG7iykI7u2oUDq/CxCRu58t4iK2c2fzuwwREclL1liwROd3FSIiIiIichdST2m5Y9hstvwuIddYLJb8LkFEREREREREROSOoFBa8t20adNo164dvXr1ypH5rl69Snh41v468Z9//kmPHj1Yvnx5jtz7ZsuXL6d58+ZMnTo1V+YXERERERERERG526h9h+S7o0ePsn//fnx9fUlKSsLPz++25lu5ciWff/45TZo04d1336Vs2bLpjl2zZg3btm3jxIkTPPPMM5jN5tu6981MJhNnzpzhxx9/ZMCAAbc117x581i4cGEOVQYLFiygcOHCOTafiIiIiIiIiIhIViiUlnwXGhrK2rVrSU5OZtu2bTRv3vy25tuwYQM2m43z589TvHjxDMf26tWL77//nvDwcBYuXEi3bt2ydI+JEydmqd3ItWvXADhz5gxjxozB398/02u6du1KsWLFUh2PjY3l1KlTWaovK0wmU47NJSIiIiIiIiIiklUKpSXXdOnShcjIyEzHORwO4+uRI0fy+eefZ3pNx44d6dq1a6rjZ8+eZd++fXh4eDBq1KhMVz4XKVKEDh06MHv2bGbMmEHHjh2ztFp60aJFxMTEZDruRgsWLMjSuHbt2qV53MvLC4BatWqxaNGibN3bJSEhgVq1agHg4+NzS3OIiIiIiIiIiIjcDoXSkmsuXbrEmTNnsnVNTExMlsLelJSUNI+7wto2bdpQo0YNt3MWiwUvLy8j3HXp1q0b0dHR9OjRI1UgbbfbsVgsmEwmvL3/718X17gdO3ZQqFChTOvNimbNmnH27Nl0Q/Gb675dOT2fiIiIiIiIiIhIViiUllzj6+sLwPjx4wkNDc2RObt06cKuXbvSXOUbHR3NkiVL8PHxoX///sD1IPqnn37i6aefZvLkycyYMcMImD08PNyuX79+vfG1w+HAarVit9sBmDRpEi1btjTOx8fHZ1hnSkoKcXFx+Pn54efnh6dn1vcUjYuLo0SJEqmO3xiK54QbV6iLiIiIiIiIiIjkFYXSkmvyeiXuhAkTSEhI4PXXX6dUqVIAbN26lbfffptZs2ZRvXp1KlSogJ+fH1euXOHSpUv4+/tTsGDBVHO5QmmLxYLFYkkVYH///fc4nU6CgoI4cuQI06dPp0iRIgwfPhyAPXv28Morr2S59jfeeIOffvopwzFOpxOAv//+2y0gzw7XHHA9sM/pjR1FREREREREREQyo1Baco3VanX7bLfbuXbtGn5+fpjN5kxDa1cwnJSUhL+/v1uAenP7jp9//plly5ZRpEgRevbsaRz/9ttvgevtNkaNGmWEy19++SVTpkzhhRdeMILk7KhQoYLxdWxsLGvXruX+++83jgUHB9OgQQN8fX3x8fFJ91kPHz7MkSNHjFXlGXGtbE5OTs6RDQ8TEhIICAi47XlERERERERERESyQ6G05JrExES3zxERETRp0uSW5po2bRqNGjWiSpUqAG59nHfv3s2AAQMAeO655/jnn3+Ii4vj6NGj7N69Gy8vL7dAGki18jk7Tp8+zdy5c2ndujW1atUyAmU/Pz9jzAMPPMBbb73FpUuX8PHxwcfHJ817fv/99xw5ciRLrTlcq5wz2+jw/Pnzxvf5zz//pECBAtl6PhERERERERERkdykUFpyzcKFC7HZbISEhABgMpmoXLky/v7+mEwmvLy8SEpKYt++fQAEBgby4IMPGtfb7XZsNhtJSUlGsJrWquYtW7YYAfjMmTOZOXOm2/lOnToZYbZLdno832zp0qUsXLiQ3bt3s3z5ckwmE5C6XcmiRYtYtmxZlubMSkh+Y+sNERERERERERGRu5VCack1N2/WV7x4ccLCwozPly5dom/fvsbYWbNmcd9996U5l8ViSfc+rVu3Zs6cOdSqVYv77ruPYsWKcfHiRRYvXkzx4sXp169fqmtuJ5Tu1asXq1at4p9//mHBggXUq1cvzXGdOnWiWbNmxkrptO65dOlSli1blqodSVpubodyu2w2G1arFW9vbyNYFxERERERERERyW0KpSXP2Ww2lixZwsSJE4mNjSUwMJAlS5akCrFvHN+rVy8qVarE4MGDU60qrlKlCj///DNFixYFrvebfvbZZwEYPXp0mn2TXe0yVq1axbZt29KttU+fPjzzzDNuxwICAnj99dcZO3Ys06ZN46GHHkp13W+//cZ3332Hv78/3t7e6a6EPnz4MJBx6O7iCqX37dtHzZo10x1344rq+vXrpzrvCqNd40aNGkWHDh0yvb+IiIiIiIiIiEhOUCgteebatWuEhYUxd+5czp07h6enJwUKFCA2NpZZs2al2ZrDYrEwdOhQfv31V3799VcSExMZM2ZMqnGuQBrgww8/5NSpUzzzzDM0atQozVpcgey1a9e4du1aujX7+/unefyll17i+PHjdOnSJc0VzJcvX2bbtm3GKumMekYXL17cbRPH9CQnJwPX24QULFgw3XEOh4OkpCTgeoB+cyDuCqVdv26nv7aIiIiIiIiIiEh2KZSWXBUVFcUvv/zCxo0b2bp1KxaLBU9PT1q1akWfPn2IjY2lS5cuzJs3D29vbwYPHmxce/nyZfr378+ePXswmUy0b9+e7t27Z3i/77//nsWLF1OuXDlGjRqV7riEhAQAXn/9dd5+++1U559++mmOHz/utqHijcxmM6NHjwb+b7Xzjdq2bUvbtm0zrDW74uPjAXjiiSf4+uuv0x1340aH69at00aHIiIiIiIi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oWPHjsD13tKLFi3iu+++IyoqihIlSjBixAiaNWuGzWZjzJgxRvuNKlWq8PXXXxMdHc2sWbNYsWIF/fr1IzAwMMP7nTx5EoAHH3zQOHbhwgUSExPTvSYmJsat7cfN5zKTl6H02bNnAbK0alxEREREREREROROpVBack1KSgrbtm0jLCyMzZs3Y7VaMZlM9OzZk169euHv78+lS5d455132LVrFxUqVODkyZOcO3cOgJCQEJo0acL69euZMmUKw4YNy/B++/fvB6BWrVrGMV9fXxITE/njjz8yDbVdPv74Y2bPno3ZbM50bE6F0g6HI9Mx//zzD3A9tBcREREREREREblbeeZ3AfLvFB0dTYsWLXjzzTdZv349drudp59+mrVr1zJw4ED8/f0JCwujTZs27Nq1i3bt2rF8+XK8vb1JSEgwWlUMGDAAb29v5s+fz08//ZTu/eLi4jh8+DBeXl48+uijxnEvL69bfgaTyZTpmKyEyVmR2TwpKSns2bMHIM22HCIiIiIiIiIiIncLrZSWXBESEsIXX3zBq6++SvPmzenRowf33XcfAEePHuWjjz5i+/btBAcHM3nyZFq0aGFcFxkZSUxMDEWKFKF8+fJ07tyZOXPm0L9/f4YMGUKXLl1S3W/Tpk04HA7q1q1LSEiIcdzDw+OWnyG7ofSwYcPS3FwwIxEREUDmK663b99OcnIyhQoV0kppERERERERERG5qymUllxTs2ZNdu7cabTBOHz4MNOnT2f9+vU4HA6aN2/OyJEjKVasmHGN1WoFcOsDPXDgQPbv38/evXsZO3YsmzZtYuTIkW4bGi5YsACANm3auNXgmu9WZOVau91ufO0KmG/FjfOkZdGiRQA8/fTTGQbtrnnSW3mdnJwMgKen522tIhcREREREREREblVCqUlVzmdTsLCwli8eLHRfqJChQoMGTKEBg0auI09fvy4sbmgv7+/cdxsNjNjxgxee+019u7dy44dO2jdujVDhgyha9eubNy4kQMHDlCwYEGefvpptzldwXKdOnWyXXt2Q+lvv/2Wxx57LFv36NKlC7t27cowlD527Bjbtm0DUofu6dVzY+1Op5OpU6eSnJzMjh07AChRosRtrSIXERERERERERG5VQqlJVccP36cGTNm8NNPP5GQkABcD0LffPNNQkND8fb2xm63c+zYMa5du8bRo0eZPXs2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4eHGfMHBwcZKaT8/v2w9s4iIiIiIiIiIyO1QKC25ZuHChdhsNkJCQoDrG/NVrlwZf39/TCYTXl5eJCUlGW0tAgMD3VYJ2+12bDYbSUlJFChQAIDhw4dnq4Zu3bpla6V0dmzcuJG9e/cydOhQt7YahQsX5uDBg/z555/4+vri7e2Np6cn586dA66vlL5xRbYrvLfb7ZjNZrcV4fB/K6gBnE4njRs3JjExkWbNmvHRRx+5jd28eXOatX7xxRdMmzYNIM3rRERERERERERE8opCack1JUqUcPtcvHhxwsLCjM+XLl2ib9++xthZs2Zx3333pTnXzauHs8oVBOe0TZs2MWTIEOD6aunFixcD0KBBA4YOHcru3bsZP358mtem1yojo5YfLnv27Ml2eB4XF8eCBQuydY2IiIiIiIiIiEhuUSgtec5ms7FkyRImTpxIbGwsgYGBLFmyJFWIfeP4Xr16UalSJQYPHuy2kWFmNm3alCvtOxYuXGj0br5w4YJx3NWepGnTplSuXNnY7NDT05MpU6awZcsWBg0axGOPPZZqzpIlS2Z63xtDfYCTJ09y7733Ztife/r06cTFxWE2m2853BcREREREREREckpCqUlz1y7do2wsDDmzp3LuXPn8PT0pECBAsTGxjJr1qw0W3NYLBaGDh3Kr7/+yq+//kpiYiJjxozJh+rdPf/889SrV48nn3ySokWL8sknn7By5UrKlSsHQJkyZVKF4cHBwQCULl2aqlWrZvuekZGRrFy50vi8d+9eXnjhBTp16sTAgQPTvObChQvMmzcPHx8f2rdvz9y5c7N9XxERERERERERkZykUFpyVVRUFL/88gsbN25k69atWCwWPD09adWqFX369CE2NpYuXbowb948vL29GTx4sHHt5cuX6d+/P3v27MFkMtG+fXu6d++erft/8skn+Pv7Z2nsjSueM9OqVSu3z2fOnAGgfPnyAFy9etXY7NDT0zPNlcwOhwOr1UpKSgqJiYnprhR3mTVrlrGhodPpJDg4mMuXLzNjxgwefvhhGjRokOqa999/n5SUFN544w2jt7eIiIiIiIiIiEh+UigtueLy5cv07NmTI0eO4HQ6AfD09KRly5b06dOHSpUq4XA4mD59Ona7HYDZs2fz0EMP0bx5c77//ns++eQTrl27RvXq1ZkwYYKxCjk7btwkMCdFR0dz6dIl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K1c4ffo0ERER9OrVCy8vrzRrdj2bK8AHaNWqFXXr1qVIkSLp/lm4VnXf2M9aREREREREREQkrymUllxx/PhxZsyYwU8//WSsEC5RogRvvvkmoaGheHt7Y7fbOXbsGNeuXePo0aPMnj0buL4yuEKFCm7zFSxYkHnz5vH++++zfPlyateuzYsvvmicnz59Ol9++aUR1BYpUoRBgwbx7LPPZqneBg0a8OSTT7J69WomTJjApUuXCAsLo1KlSvTs2dMYd+7cOTp16kRkZCSVK1dmxIgRxrnmzZvzyCOPMG/ePFauXMm5c+dYtWpVtr937dq1SzeQhv8Lo28MpYE0A+lz586xbNkyrl69yg8//ABAcHBwtmsSERERERERERHJKQqlJVcUK1aM/fv3k5CQQOHChenZsycdOnTAx8fHGOPl5cWgQYM4evSocSwoKIgJEybg6Zm6s4zZbGb8+PE0btyYhx9+GD8/P+Ncy5YtmTFjBiaTia5du9KjRw8KFiyYrZo9PDxo06YNzZo1Y+LEiaSkpLgF0gAlS5akUaNGbN68mWnTplGgQAG384GBgfTp04c+ffpw9OhRdu/ezdGjRzl79iyXLl0iOjqahIQEY7VzWurVq5dhna4wOqM5XEqUKMHKlSu5ePEiAH5+frRu3TrT67LLu2SJHJ9TRERE5G5i/PeQKRDMIflbjIiIiNy5TEH5XcEdwcN5c+NbkRxy+vRpNmzYQOfOnd3acdxo/vz5jB07luDgYF544QVeffVVChUqdEv3O3DgAGXKlLnl67Pj0qVLFC9e/JavdzqdWK1W7HY7TqcTDw8PPD098fLywts7458Vffrpp8ycOZP69esza9asTO81YcIEdu/eTcOGDWnbtu1t1X2zJk2aALBp06Ycm1NERETkbuW02/FIjgCnPb9LERERkTuZ+d/5Q+zs5EQKpSVfxcbGcuHCBapUqaJex3chhdIiIiIiIiIiIgLZy4nUvkPyVWBgIIGBgfldhoiIiIiIiIiIiOSR1I17RURERERERERERERyiUJpEREREREREREREckzCqVFREREREREREREJM8olBYRERERERERERGRPKNQWkRERERERERERETyjHd+FyAiIiIiIiJ3BqfdjkdyBDjt+V2KiIjIv5c5EMwh+V1FvlIoLSK3LXr2TGwRF/O7DBERERG5Dd4lSxDSvQecXw5J4fldjoiIyL+TKQju7ahQOr8LEPm3s1qtmEym/C4jV9kiLmI7dza/yxARERGRnGCNBUt0flchIiIi/2LqKS3/E65evcrw4cMZPnw4hw8fTnPMtm3bOH/+fI7dc86cObRs2ZJ27drl2JwA48aN48cff8RqtaY6t3v3btq0acP3339PXFxcjt5XREREREREREQkJ2iltOSaP//8k2HDhuXK3DNmzKBs2bJZHm+1Wlm2bBkAbdu2TXV++fLljBw5kpCQEGbOnEmVKlVuu8aSJUty6tQpAE6ePEmFChVue87Y2FgWLFjAvHnzqFu3LvPnz3c7P2XKFI4ePcq4ceMoXrw49evXv+17ioiIiIiIiIiI5CSF0pJr7Ha7EcrmN7PZbHwdEBCQ6nytWrUoWbIk586do3Pnznz11VfUrVv3tu75+OOP4+npicPhYMeOHTkSSm/fvh27/fqmM2+88YbbuVWrVrFjxw48PDyYMGGCAmkREREREREREbkjKZSWXOMKgosXL87WrVvTHPPHH39QpEgRypcvn6U5K1eu7DZ3Vnl5eaWq60blypVjyZIlvPrqqxw+fJiePXsyY8YM6tSpk+Z8CxcuZNKkSZjNZsxmc7o9oz08PACYNGlSqlXNAE6nE7vdTnJyMrVq1WLy5MkZPsdvv/0GXP8+PP7448bx06dPM2rUKGPOXr16pXn9888/z4cffpjhPURERERERERERHKTQmnJNd7eGf/jZbVaGTx4MOHh4Tz//POMGzcuy3Nnd+PAG0Pp9K4tXLgw8+bNo0ePHuzfv5+ePXsyc+ZMateunWbtCQkJWCwWI5h2BdA3KlKkiPF1YmJiqvNOpxObzUZycjLJyckZPkNKSgobNmwA4KWXXjKOX716lddff53ExEQeeOABnnzySbfroqOjWbJkCZ6enrz22msZ3kNERERERERERCS3KZSWXOPpmfE+mnPnzuXChQuYTCZeeOGFbM2dVgDscDiwWq34+Phk+1qXwMBAZs6cSefOnfnnn384ePBgmqH0yy+/zMsvv+x27ODBg2zcuJH+/ftneP+1a9dSpEiRbLcHWbduHTExMZhMJlq1agVc7zH96quvcvr0aUqVKsXMmTMpXLiw23UzZ84EoFmzZllekS4iIiIiIiIiIpJbFEpLrsko/A0PD2fq1KnA9VXH7du3T3PcAw88wPLly1PNlVbgfejQIV544QU8PT3x9vZOd6X2M888k2FtX375JV9//TX79+83wt/MhIeH89JLL2Gz2XjggQdo3rx5umOnTJnCiRMnePzxx5k9e3aW5gf473//C0C1atUICQkhPDyc119/nX/++QeA+++/n2+//TbVdT/88ANwvcf3hAkT3M716tWLAgUKZLkGERERERERERGR26VQWnJNeiulrVYrAwYMIDExkaCgIAoVKuR2PiUlhfDwcDw8PBg+fHiaAXJ6x8xmM/7+/qnaaTidTqN9RkBAQKraHA4HkZGRAJQsWZLSpUtTunTpLD9rqVKlaN++Pd999x1jxozhscceS3NDxb///psTJ04A0L179yzPf+DAAXbv3g38X/uRYcOG8c8//2AymbBarfz888/8/PPP6c6xcePGVMdu3ixRREREREREREQktymUljw3duxY9u3bB8B//vMfvv76a7dVzb179yY8PJzOnTvz8MMPZ3neatWq8ddff6V5LiEhgVq1agGwePFiypQp43b+yJEjPPvss8D1UPpW9O7dm//+979ERkYyceJERowYkWrM0qVLAWjYsCH169fP8tyTJk1KdWzq1KmMGTOGqlWrMn78eNq2bctHH31knP/iiy+YNm0aQ4cOpVu3bm7X1qxZk8TERHx9fbNcg4iIiIiIiIiISE7IuOmvSA4bO3Ysixcvxmw2U69ePbZu3cqAAQOwWCzA9fB106ZN1K5dm0GDBuVZXVFRUcD1ntL+/v4Zjo2LiyM6Opr4+Hijbri+UWLr1q2pWLEiTZs2TXVdfHw8K1euBKBv375u5ywWC/Hx8URFRREXF+d2bvPmzfz6669umzUCFChQgI8//phixYqlWefmzZsBaNy4cbrPklnfbxERERERERERkZymldKSZy5evMjvv/+OyWRi8uTJPPbYY7z66qts2LCBTp06UbVqVZYsWcL999/P119/jdlszrParl69CkDRokUzHTtu3DhWrFiR4ZibN0G82fPPP5/uuU6dOvHee+8BEBMTw6hRo4zj8+bNSzXearUC13tqu3pGW61W/vnnH/z8/Ixe1Gldk5ycnGkILyIiIiIiIiIikpMUSkueKVGiBIsWLeLQoUPUq1cPgG+++YaXXnqJAwcOcODAAYoWLcrcuXMJCgrK09pcoXSRIkUyHVu8eHGqVKmCyWTCbDZjMpky3DgxM06nE6vVisViwWKxuNXw4YcfcunSJSpWrEj37t3TDKWTkpIA+Oeff4xND288N2PGjHTvnZSUpFBaRERERERERETylEJpyVMBAQHUq1cPp9PJzp07mTlzprFZH0BkZCSdO3emQ4cOPPXUU1kKiS0WC3FxcW4h8c2tLjITHR0NZC2UHjBgAAMGDMjW/LdqyJAhnD59mnfeecet7/aN2rdvT/v27QE4evQow4cP56+//uLhhx9m6tSpBAcHu40/efIkFSpUyO3SRURERERERERE0qRQWvJMVFQUBw8eZPv27WzatImzZ88C0KhRI4YMGYKnpyeff/4569evZ+zYsXz44YdUrVqV2rVrU6VKlXRbXuzevZtXXnkly3U0adIk3XNr1qxhzZo1bmO/+uqrLM+d0woVKsSCBQswmUxERkamO+7YsWPMnDmT1atXG6u2r127RlJSklsoPX36dCZOnMhrr73GW2+9lW7QLSIiIiIiIiIikluUSEme+e6775g6dSoAJpOJFi1a0KNHD7Zu3cr8+fNp164dEydO5NSpUyxYsIDVq1dz6NAhDh06xFtvvZUvNRcqVCjTMa1bt07VNiM7QkNDGT9+fLrnXavIbxYZGcmGDRtYs2YNe/bsAeDRRx9l5MiRzJw5k+XLl/Pyyy/z/fffExERwYcffsiOHTvw8PDg6tWrJCUlUbBgwVuuW0RERERERERE5FYolJY807t3b86ePUvNmjVp2bIlhQsXJioqipkzZ5KUlMR3331H9erVCQ0NpXfv3gwaNIjffvuNXbt20bNnz3Tnfeihh9iwYQM+Pj6YzeY0V/8mJSXx5JNPArBq1SpKlSqVYa0DBw5k69atWQqlCxQoAFxv/ZGdkDciIoLk5ORb3tAxISGBr7/+msjISO6991769+9Pq1atWLRoEatXr8bPz48zZ87wwgsvcO7cOex2O8HBwUybNo2aNWve0j1FRERERERERERul0JpyTPe3t5MmDDB7VihQoX46aefWLp0KQsXLuSvv/7ir7/+wm6306VLFxo1akSjRo0ynNff35977703wzE39pgOCAggMDAww/FxcXFGfZlxrWTu1asXnTt3znS8S5cuXdi1axe+vr5ZvuZG5cqVY9y4cURFRdGmTRsSEhIYNGgQq1atokaNGkyePJkuXbpw+vRp/vOf/2Aymfjzzz8JCQm5pfuJiIiIiIiIiIjkBM/8LkD+d23bto3Vq1djNpvp3bs3W7Zs4aOPPqJ+/fq89NJL+Vqba+PDYsWKZTo2u5sq3iy99hxZ0aBBA9q0aUNYWBhPP/00q1at4oUXXuC7774jLi4Ou90OQLVq1ejduzcOh8NooSIiIiIiIiIiIpIftFJa8s3HH3/MsWPH8PLyonbt2jRt2pQWLVrQtm3b/C6NmJgYIGuhtMvKlSvZt29flsefOHEim1W5u3TpEmFhYSxbtozTp08THBzMF198QatWrVi/fj1DhgwhJSUFT09PduzYwXvvvUfNmjUJCwujWbNmNG/e/LbuLyIiIiIiIiIicisUSkuucTgc6Z6z2Wy8/vrrbNu2jZ9//pldu3axa9cuxo8fT+3atenWrRvNmjVL93qn05kbJQMQHh5uhNIlS5bM8nWu1iN5xWq1smjRIi5evMjzzz/PO++8g9lsZvjw4SxbtoygoCCmTJnC4MGDOXfuHADvv/8+zz//PEOGDCEwMJBHHnkkz+oVEREREREREREBhdKSi2w2W7rnvL29ad26Na1bt8Zms7Ft2zZWrVrFpk2b2L17Ny+//HKGc7vaUuSUjRs3EhkZSVxcHCtXrgTA19c3W6H0yJEjb6mndFbdHPKXKVOGr776CrPZTPny5Vm7di2ffvopERERPPDAA0yaNIl77rkHPz8/IiMjsdlsVK1alcGDB/Phhx/y2muv0bdvX7p163bLmy2KiIiIiIiIiIhkl0JpyTVZDY69vb2NDQ2jo6PZvn17pq0lMgq802KxWDKsKzY2llGjRrkde+655/D0zLztem6u2r6R65lvvN8999zDhg0b6NevH//88w+enp706NGDfv36YTabcTqdREVF4ePjg7f39X/dX375ZS5evMjs2bPZsmULTz31FGXLls2TZxAREREREREREVEoLbnGFaJevXqVli1bZuvaL7/8MsPz2V0pnZKSYnx9Y0Dt0qRJE/z8/ChbtizVq1enQYMGWe657FrBHBYWxsGDB7Nc08mTJ4GsB+yuca7fExMT6datG/v37wegRo0ajBo1igcffNC4ZuPGjcTHx1O1alW3uQYPHkz16tVp2rSpVkmLiIiIiIiIiEieUigtucYVHNtsNk6dOpWjc2d3pXR0dLTxtdVqTXU+KCiIvXv34uHhke1aXM+5f/9+IyDOjrTqSUtsbKzbeH9/f77++mv69u1L165dadGiBR4eHhw9epSffvqJY8eOsWnTJgBCQ0NTzdeqVats1yoiIiIiIiIiInK7FEpLrnGFtcWLF2fr1q05MmflypXd5s6qCxcuGF+ntVIauKVA+sb5brWndHr13My1+WJycrJxrHDhwixcuNBt3L333svy5cu5cOECHh4edO7cma5du2a5LhERERERERERkdykUFpyTU5vRng7czdt2pSjR4/mSi03tga5FVldKf3EE09k6Rl8fX155513iIiIoEmTJpQrV+626ssK75Ilcv0eIiIiIpK7jP+mMwWCOSR/ixEREfm3MgXldwV3BA9nXu3SJvIvdeXKFWw2G4GBgfj7++d3OXmqSZMmAEabEBERERG5uzntdjySI8CZewtMRERE/ueZ/50/AM5OTqSV0iK3qUiRIvldgoiIiIhIjvDw8oICZfK7DBEREfmX88zvAkRERERERERERETkf4dCaRERERERERERERHJMwqlRURERERERERERCTPKJQWERERERERERERkTyjUFpERERERERERERE8oxCaRERERERERERERHJM975XYCIiIiIiNzdnHY7HskR4LTndykiIiIidz5zIJhD8ruKfKVQWkRuW/TsmdgiLuZ3GSIiIpIPvEuWIKR7Dzi/HJLC87scERERkTubKQju7ahQOr8LEJG7ny3iIrZzZ/O7DBEREclP1liwROd3FSIiIiJyF1BPacl1TqeTHTt2YLFYsnxNfHw8zzzzDM8//3yO15OQkMD8+fN5++232bFjR47Pf6eYOHEizz77LMOGDcvvUkRERERERERERAxaKS257vLly3Tr1g1/f3/CwsIoW7ZspteYzWaOHTtG4cKFc7weX19fZs6cycWLF7Hb7Tz66KPZnuPgwYO88847OVqX3W7HarUSHBzMypUrb3s+T09Pjhw5QmRk5O0XJyIiIiIiIiIikkMUSkuuO3jwIADVqlWjZMmSxMbG4u/vj7e3+z9+ERERxMfH4+vri5eXl/Hr4kX3XsUBAQEEBATccj1eXl60adOGb775hl9++YWUlBR8fHzcxjidTmw2GxaLhZSUFAoVKuR23uFwcOrUKQCKFy9+y7XceD+73Y7FYsFsNt/2fABt2rRh6tSpXL16lXPnzmXphwEiIiIiIiIiIiK5TaG05DpXi4xWrVpx7Ngxnnvu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\n",
      "text/plain": [
       "<Figure size 1500x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,9) ,dpi=100)\n",
    "sns.set(style=\"white\" ,font=\"simhei\", font_scale=1.1)#会洞三个坐标树不一样的图像\n",
    "plt.barh(df .index,0.5,color=\"orange\" ,alpha=0.6, )\n",
    "plt.barh( df.index ,df.values,color=\"#e66765\" ,alpha=1)\n",
    "plt.title(\"异常交易/全部交易的比例\",fontsize=25)\n",
    "plt.xticks(ticks=np.linspace(0,0.5,num=5),labels=[\"0%\",\"10%\",\"20%\" ,\"30%\" ,\"40%\"],fontsize=20)\n",
    "plt.yticks(range(17) ,df.index ,fontsize=20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 198,
   "id": "d224ec7e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "订单渠道\n",
       "手机团购          0.501931\n",
       "抢购            0.400281\n",
       "手机抢购          0.339863\n",
       "团购            0.330159\n",
       "手机站点          0.287742\n",
       "当当            0.209125\n",
       "主站            0.167849\n",
       "do.site_id    0.097698\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 198,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby(\"订单渠道\")[\"异常\"].mean().sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "id": "350850c0",
   "metadata": {},
   "outputs": [],
   "source": [
    "df2=train.groupby(\"订单渠道\")[\"异常\"].mean().sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "id": "629ac536",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABUsAAAMDCAYAAACb+kQ0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACwMklEQVR4nOzdeZzN5f//8eeZM5sxGAxjyV4ShTLUp6ZkKbIllVIJIRTJPtTHGiKyJIlKWauRFlJE9iwNCiHZ1+zL7Gf9/TG/8/7MMXNmziw6M30f99vNzZn3+3pf13VmDp9PT6/rukxOp9MpAAAAAAAAAPg/zs/XEwAAAAAAAACA/ICwFAAAAAAAAABEWAoAAAAAAAAAkghLAQAAAAAAAEASYSkAAAAAAAAASCIsBQAAAAAAAABJhKUAAAAAAAAAIImwFAAAAAAAAAAkEZYCAADkSHJysvbv36/9+/frzJkzPp3Lvn379MEHH+jAgQM+nce/0YkTJ2SxWP6x8S5cuKDp06fLbrf/Y2Nm16VLl/T111/riy++8PVU4GPJycm+ngIAAHnO39cTAAAAcElKSpLD4cjTPk0mk0JCQnI0lw0bNqhZs2YZ3j9x4oTatm0rSWrfvr3GjBmTrk1cXJxmzZqlXr16KTQ0NNtzyIrValXLli11/PhxSdLRo0c1ceLEPB9HkhwOh86fP5/n/YaGht6U701eSEpK0gsvvCCr1aq2bdvq6aefVtWqVW/aeBs3blS/fv0UFxcnq9WqAQMG3LSxcmratGn64IMP5HQ6FRISopYtW960n9/ly5fzPKj29/dXeHh4jp7dtm2bTp48qSZNmqh48eJePTN79mxFRESoefPmCgoKytG4ObV792598803kqR69eqpZcuWeT7GokWL9MMPP+jJJ59Uo0aNFBERkWf9njt3TpLUvXv3fPt3BADg34mwFAAA5Btt2rTRiRMn8rTP8PBwbd68OVvPnDlzRoMHD9aOHTv03nvvqWnTpunaBAcHZ/g6rcWLF+ujjz7St99+q2HDhqlFixbZm3wWAgIC1KBBAyMs/eGHHxQdHa0SJUrk6ThSavDbsGHDPO936NCh6ty5c573mxc+/vhjI7D55JNPFBwcrL59+9608erUqaOiRYsqLi5Oc+bMUWRk5E35nudGVFSUZs6cKUlKTEzU119/rY4dO96Usd544w39/PPPedpnjRo19O233+bo2U2bNmn27Nn673//q169eum1117L8plly5bp4MGDGjVqlIYPH278A0t2NWvWTElJSfLz89O6deu8eub48eNauHChJMnPz++mhKW7du3S7t27tXv3bm3ZskXTpk3Lk35Xr15t/L39yiuv5EmfAAB4i7AUAADkG0WKFMnzPnNS6XTt2jX98ccfcjgcGjhwoBYvXqw77rjDrU1gYKDxOqOKMYvFonnz5klKXbZcuHDhbM/DGx07dlRMTIwx5tKlS9WtW7c8H6dQoUJ53qekHFX9ZiUpKcmofMypY8eO6eOPP3a7tmXLFvXu3Vtmszm3U8xQ0aJFNXr0aHXt2lVOp1PDhg3T999/r7CwMI/PDBgwwOuK306dOmUY/GdHvXr1VKtWLf3xxx+SpM8///ymhaU347ORm8+x6x8lHA6HHnjggSzbx8XF6dChQ5KklJQU1atXL8djX7t2TVeuXMnW9yQgIMB4fTP+/FosFm3atElSasXuwIEDtWLFCq1YsUIhISEym83y83Pf9c3hcMhisSguLk7jxo3zWOXrul6kSJF/vCIXAADCUgAAkG+4AsjAwEDt2bMnV301btxYp0+fzlFIeccdd2jSpEl69dVXlZSUpN69e+urr75yC63ShgAZhWeff/65Lly4IEl69dVXb1qF4O233666devqt99+kyTFxMTclLA0MDBQfn5+cjgcat26tUaNGpXjvmJjY/Xyyy9L8lyVmxuzZs3SN998o6+++ipHS65dS+ATExMlSU899ZRWrFihXbt2aebMmerTp0+u53jp0iX5+/srMDBQ/v7+RrAUFRWlBx98UBs3blSdOnWUmJioYsWKyeFwyGazyWq1KjExUeHh4fLz89PRo0eN4DIrb731Vq7nLaVuOzFixAhJ0qFDh7Rr1y7dfffdedJ3WmlDsp07d+aqr1atWunMmTN5EpaWL1/eq+Bz27ZtxrYirVu3VoUKFXI8tuvPSXbmnzYsTfuPO3llw4YNxp+RZs2aqUKFCvrhhx/0008/efV8Zvudun72BKUAAF8gLAUAAPmGv3/e/1+TnIYETZo00ZNPPqklS5bo6tWrOnjwoBo0aGDcTxuQ3hiWxsfH64MPPpAk1a1bV7169crRHLz15JNP6rffftNtt92mhx56SElJSTelkszf318Wi0X+/v65qpRNG5Dm9c/8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2bPq27evfv/9d0mpB5e9+OKL2erDk0WLFmV6YJXL+fPnPf4dcON+x0WKFFHnzp1lt9v1+uuv6/jx45JSQ8S6deume9617+fNXoZ/yy235Hg7E0m6++67FRMToxUrVqhu3brav39/ujYWi0UjRowwQvFevXq53f/rr7+M14SlAID8jLAUAADka2PGjFFERIQKFy6s5s2bZ7rH5oABA4yQccyYMQoNDc3xuK6wNCEhIdf7WWbnxPdy5crps88+0+DBg/XXX3/pww8/NMLAevXqqWTJkjp//rwOHjyoNWvWuFU6pnXs2DF9/vnnklIr+caOHWtUkfbq1UsdOnTI1rL5CxcuaMKECXl2sNONsnP4j9Vq1cSJE1WqVCl169btpsznZipbtuxN7d9kMmns2LE6ePCg/vzzTy1atEg1a9ZMFxRLqZ+NPn366M4779TAgQM1ZswY4/Pu5+enpk2b6pNPPpGUuiz+/fff9ziuqwJXkl544QUjiKxRo4Z++OGHbH3e7Ha7YmJi9M477xj7tua18PBwr9q9/fbbbu/NG2azWdHR0UZgOHXqVH366afp2rn+bsjLSvabpXTp0pluAzJhwgTjHxfq1q2revXqacaMGerVq5fMZrMReEupe+ECAJBfeffP2AAAAD7y3XffafLkyRo9enSWFXgbNmzQihUrtGrVKoWEhORqXG9PzfaG65R0b/n5+WnChAlavHixW9VkYGCgunbtanw9ZcoUj1Wrb7/9trHEt2vXrun29PQ2uEpKStLMmTP16KOPGkHpE088oV9//VW7d+82frkqBv38/PTFF1+43evYsaPR3/vvv29c37Vrl1Ed6TpYyxsLFy7UsWPH1L9//1z/nP+tgoKCNGXKFGMLiLFjx+rUqVMe2zdq1Ejr1q1L9w8DnTt3NvpYvXq1du7cmeHzK1euNPZhrVixovr37+92PztB6caNG9W2bVuNGDFC8fHxqly5sr766iu3z9SiRYuMz84LL7zgdi8mJsboq1mzZm73Hn/8ceOet2FpTjVu3Nj4c7dlyxbt2LEjXZuUlBRJBSMszUxsbKwWLFggKfXvgKFDh2rIkCF677331KVLF128eFG//vqrpNSq0uz84wgAAP80KksBAEC+FhISouvXr6t8+fIqXry4V21LlCjh9dJmT8aPH6/x48d7vH/58mX95z//kST17t1bffr0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oCFDhkhKrdS9cb9WKXX5sGurh6SkJLdwMjPZrRLNyTOJiYlugXdu9sZ888039ccff+iPP/7QiRMnjH1MixYtqtmzZ2frECdvbdu2TZMmTdLu3bslpZ7IPmXKFEVGRrq1++abbzR//nxJqSetd+/ePV1fabdQ8CaczyslSpTQ999/r0qVKqW756pQz21YeuDAAU2bNk0///yzatWqla/C0vfee88IqW+s6E9byZ82OAUAwJcISwEAgM9kVYX21VdfSUpdBpzbZddpmc3mDK+nrdqbOHFihsGYS3YPeGrVqpX++uuvHFUGelKnTh3dd9992rhxo3GtcOHCevvttz2+x5y4fPmylixZonnz5hlVjiEhIerfv7/bSfdSahA9bNgwY04PPPCAsXz7Rq4qR5PJlOmyaIfDofHjx6t48eIel6pnV3BwsFeBWdqfl7+/f56eWn4zwtLjx4/r77//1qVLl/TXX3/pu+++cwsJ0x6+lV1BQUHq3Llzusrefv36eayKzQm73a5169Zp7ty5xgnqkvToo49q1KhRKlGihFv7devW6c0335SU+vmfOnVqhqFw2qraf7KyVFKGQan0v7A07b6r2XHo0CG99957WrlypbHn58GDB42Do7Jjy5YtOnfunFq0aJFnB07t27dPy5cvl5RagZ52Cb6U+g9cf/75Z56MBQBAXiEsBQAA+dL27dv1yy+/SErdz/GfOC06LwNGT3KzTDmtI0eOaMiQIUbFnUtCQoKef/55jRgxwghzc2P69OmaM2eOEb6YTCY99thjGjx4cLqwMSUlRYMGDTIO2KlcubKmTJni8fvqqiwNDw/P9Oe7ZMkS/fnnnxo+fHieVebmBzkJzrP6jO7du1f9+/fP8F7Dhg1zHJZaLBZNmTJFn376abp748eP1/Xr19WlS5dch8m//fabXn/9dZ09e9a4VqVKFQ0ePDhd0CalVp9HR0fLarXKz89P77zzjm677bYM+87utg83m8ViMU6Iz25l6R9//KEPP/xQq1atcjsYqXr16urRo0eOgviffvpJCxcu1FtvvaUXX3xRr732Wrb7SCs+Pl79+vUzKvl79eqV4SFqAADkN4SlAAAg37l48aKGDh0qKTVQ6ty5s28nlI+cP39e8+bN0/z585WcnCwpdWnyK6+8ogULFujQoUM6evSoOnfurKioKHXt2lX/+c9/chxS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/673338/3XVP+88CAHAzEZYCAACfuf3221WsWDG3kLJWrVoaPnx4jg6icS1VTRtkZkdQUJCxvDizJeSS3Co9bxyvdu3aKleunLF8OSAgQLVr11aXLl308MMPe+zzjjvuUHh4eLrToUNCQtS8eXM99dRTqlevntfvp169evr444917tw5LV++XMuWLUsXIAUHB+uNN97Isq/r169r7Nix2rRpk3HNz89PDz30kLp27aoGDRp4fLZ27dp69NFHjYOfXAIDAzV06FDVqlUrw+fKlSunmTNnZjm3gipt0Fm0aFGPgZyrcldKH8rl9LMupYbRjzzySLqfi5T62Xnqqaf02GOPGYFgVkqUKKEhQ4aoX79+WrdunZYtW6b169enm+Orr76aZVAqScuWLdO4cePcgsXKlSvr+eef1zPPPOOxMjUgIEB9+/ZVz549091r2LCh+vbtm+XY2f2+uv7uyUjz5s01YcIEXb9+Pd290NBQTZw4MdMtJgIDAzVp0iR9++236tevX7YOu5syZYomTZqkLVu26MKFCx73Lg0ICNCdd96pQYMG6Z577smy37SfXdd7b9Wqlb755hvt2bNHRYoU0TvvvJPpPxak9dRTT6ULSwsVKqQXX3zRq+cBAMhLhKUAAMCnxo4dq7/++kshISHq0qWLHn300Rwvi3YFHElJSTl6/t5779WXX37pVdu04UhGB6KMGDFCSUlJioiIUI0aNbJc9uvSpUsXbd68WSVLltT999+vBx98UE2aNMnxgTlSaoVZ165d1bVrV508eVK//vqrduzYodjYWNWvX9+r4Kpo0aKaNWuWnnvuOSUnJ6tZs2Z6/PHH0y2X9uSZZ57Rtm3bVL58edWoUUORkZF6+OGHswyl81KxYsW0evVqFSpUSIGBgfLz8zOW4edmKb7dbpfD4VBycrISExN1+fJlnT17VtWrV8/0uZzsc3ljiJdZSOeNli1b6p133tHly5d1991368EHH9QjjzyiKlWq5LjPwMBAPfroo3r00UcVHx+vHTt2aOfOnYqNjdWRI0f07LPPetXPCy+8ILvdrpkzZ6px48Zq0aKFoqKivPpZNWzYUJUqVZLJZFKVKlV0zz33KCoqKtMKzrQqVqxoBHWZfS/69++vq1evZloBHxoaqv/85z9GKG02m1W7dm099NBDeuaZZ1SyZMks51OjRo0sl8ZnpHTp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0KFDs/3cyJEjNXLkSK/aDhgwQC+//LIkadq0aZKkli1buh0CVa1aNT399NPav3+/mjZtKknGkvzSpUtne35ZWbhwocaNGyebzabXX39djz/+eK77TPt+4uPjdeHCBZUuXdrjCfdz5szR1atX9dZbbxn3mjRpou3bt2vVqlWKiorigCcAAAAAAAD8a+T7sNTf31/FihVTYGCggoKCslyGfvLkSdlsNoWHhxvL6DPicDiUnJyslJQU44CmzZs3a+PGjZKk9u3ba/HixW7PDBgwQMHBwfL391dcXJwSEhJkNpvztLL077//1qhRo/Tzzz9LkoYMGaKXXnrJbd455TqMSZIOHz4sSbr11lvTtbNardq8ebPmzJmj8PBwWa1WLViwQFeuXNFff/0lSVqzZo1Gjhxp9Jmb7QEAAAAAAACA/CDfh6Vt2rRRmzZtvG7fuHFjnT59Wr1791aHDh28fi4hIcGoRI2KitKdd96Zrk1oaKjx+ujRo5Kk6tWr51lVZXx8vDp16qRjx44pKChIo0ePVtu2beVwOHT16lU5nU6tWrVKUurWANmVdhuDX375RZLclvZXr15dISEhstvt2rVrl6xWqy5evKh+/fql6+vixYvatWsXlaUAAAAAAAD418j3Yek/5dq1a3I4HPLz89OAAQOybO/as7Nu3bp5NofQ0FDNmzdPvXv31n//+18jyDSZTOrUqZMOHjxotK1YsWK2+2/YsKHCw8NVt25dY2l9ZGSkbDab/P39NX36dKNtp06dNG/ePNWvX1/16tXTrbfeqkqVKqlUqVIaN26cli9frtWrV+v222+XxJ6lAAAAAAAAKPhIuP6/cuXKaf78+Vq2bJlq1qyZZfsff/xRknTPPffkaty0S+MlKSIiQjExMW7XTCaTWrdurcmTJ6tUqVK699571atXr0z7Tbs/qUv9+vVVv359/f7779qzZ48iIiLUoEED9e7dW7feeqsGDhxotC1durR++eWXDLcyaNKkiSIiItSuXTvt3r1bEmEpAAAAAAAACj4SrjTKlSunHj16GF87nc4M2+3cuVN79+5VUFCQGjVq5FXfMTExioyMVJUqVdyuZxRqZuT555/Xc88957YVQGYy63fGjBmSpCeffFLr1q3T2rVrtXbtWgUEBKhv375GO097vrZo0UItWrSQJO3atUsSYSkAAAAAAAAKPr+smxQs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aPr06ZKkZ599Vm3atNHy5cu1fv16vfvuu3rzzTcz7d/f3182m02VKlVKd891SJQrLHU6nUYl6oIFC7RgwYJM+x48eLC6du2aaRsAAAAAAAAgPyMs9SGLxaL4+HgFBgYqMDBQJpNJUmpQabFYlJycrICAABUqVEiS9Mknn+j06dMKCQlRz549JUmjRo1Sq1atNH/+fDVo0ECPPvqox/Fc/UvStm3b9M0336h06dLq16+fcd0V1G7YsEFHjhxRSEiIIiIiPPZ57tw5JSYmKjg4OOffCAAAAAAAACAfICz1oa1bt6p79+7prnfq1Ml4/d///lcvvPCCDhw4oBkzZkiSevXqZVSCli1bVmPGjFG/fv00cOBAzZo1S/fff3+G45nNZlmtVknS+fPntXTpUpUpUybDsPSzzz6TJL3xxht66qmnPL6Hnj17au3atVkeSgUAAAAAAADkd543x8RNFxISojvuuEP33HOPGjRoYFRw1qxZU5GRkapVq5aKFSumixcv6pVXXpHValXdunXTLXdv0aKFevbsqZSUFL388steHeTkOkSqbNmybtdNJpPWr1+vzZs3q2rVqnriiScy7cdms0lKDWIBAAAAAACAgozKUh+KjIzUN998Y3w9fPhwffHFF4qOjta9994rSTpz5oxeeOEFnT59WsHBwXr77bczDCb79eunK1eu6IsvvtAbb7yhjRs3aujQoSpTpozRJu0yfNfepK4l/i4Wi0VjxoyRJPXv318Oh0OzZ8/WU089pVKlSqUb1+FwpOsbAAAAAAAAKIgIS/Oxy5cvq3379rpw4YIkqVKlSnr//fc9tnc6nSpZsqQuXbqkH3/8UT///LOGDx+up59+WpJ7oOmqLA0KCnLrIzAwUKNGjdK3336rRx55RHv37tXUqVM1Y8YMrVq1SuXLl3dr76os9XQoFQAAAAAAAFBQEJbmY1arVR999JF69uypjh076vjx4/riiy8yfeall15ShQoVNGHCBN16661q06aNcc/pdBqvPYWlkvTAAw/ogQcekCTFxsZKkpo1a5YuKJUku90u6X+VqgAAAAAAAEBBRViaD+3fv1+fffaZ4uLiNH/+fK1YsUIhISGaMmWKJGn8+PFq166d2zMLFiwwls8/99xzevDBB2WxWNzC0LRhqeugpxtPsU/bRpI2bdokSerWrVuGc3WFpexZCgAAAAAA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H+fOnVNiYqLOnz9vLLHPrMIzbaB6+PBhSdKtt96arp3VatXmzZs1Z84chYeHy2q1asGCBbpy5Yr++usvSdKaNWs0cuRIo8+sfi4AAAAAAABAfpfvw9I2bdqoTZs2Xrdv3LixTp8+rd69e6tDhw5eP5eQkGBUokZFRenOO+9M1ybtyfJHjx6VJFWvXj3HVZX9+/c39iK9cOFCtp/ft2+fevbsaXxdvnz5TA+bSrtU/5dffpGUWtHqUr16dYWEhMhut2vXrl2yWq26ePGi+vXrl66vixcvateuXVSWAgAAAAAA4F8j34el/5Rr167J4XDIz89PAwYMyLK9a8/OunXr5njM4ODgHD8rpYa6AQEBKl68uO6//3516dIl0/YNGzZUeHi46tatayytj4yMlM1mk7+/v6ZPn2607dSpk+bNm6f69eurXr16uvXWW1WpUiWVKlVK48aN0/Lly7V69WrdfvvtktizFAAAAAAAAAUfCdf/V65cOc2fP1/Lli1TzZo1s2z/448/SpLuueeemz01jwICArR+/XqvtwGoX7++6tevr99//1179uxRRESEGjRooN69e+vWW2/VwIEDjbalS5fWL7/8kuFWBk2aNFFERITatWun3bt3SyIsBQAAAAAAQMFHwpVGuXLl1KNHD+Nr1z6gN9q5c6f27t2roKAgNWrUyKu+Y2JiFBkZqSpVquTJXF1uDEpPnz6t5ORkVatWzeMzM2bMkCQ9+eSTWrdundauXau1a9cqICBAffv2Ndp52vO1RYsWatGihSRp165dkghLAQAAAAAAUPD5Zd2kYPEUcOaE66R61+9S6iFJY8eOlSS1bds200Ok0oqJiVHz5s21cOHCPJmTJ+vWrVObNm300ksv6dq1a+nuf/nll9qwYYOKFi2qTp06qVmzZnrllVckSTNnzlRMTEy25pOYmCiJsBQAAAAAAAAF378qLD137pxxUJLJZMp1f66T3tOeIj916lTt3btXISEhRsh4I1dge/bsWdntdtlsNh0/flySVLVqVbe2J06c0KFDh7Rx48Ys5+Pn56cLFy4YfWU032+++UY2m03Hjh1TsWLF3O7HxsYaQe+QIUMUFhYmSerbt6/at28vSRo1apR27NiR5Vwk6cyZM1qyZIkkqUyZMl49AwAAAAAAAORXBb4cMDY2VvPnz9fly5e1b98+48T3okWL5rpv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AAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQJKkvNgFsGLmzp2b22+/PUmyzz77pHfv3qttrn/+858ZM2ZMkmTIkCHp2LHjapsLAAAAAFoLYWkrUl9fn9LS5hf7Lly4MNddd12SZKuttmoxLJ0xY0Z69OjxueZ68803C3MdffTRLZ7jgw8+yPrrr7/cuQAAAABgbeAy/Fbi7bffzuDBg/P88883u7+qqqrwfmVlZbNj3n///ey333654IILMn/+/Bbn+p//+Z8ceOCB+eijj5Y716ff/7RHH300++67b37/+9+noaGhxbkAAAAAYG0hLG0F5s2bl+9973t5/fXXc/LJJ+edd95ZasynA9Ly8uYXBF900UVZsGBB7r777jzwwAPNjnnppZdywgknZOLEifnhD3+Y6urqZc5VVlbWbL0jRozIggULMmLEiEycOHG5rxEAAAAAWjthaSvQsWPH/OQnP0lJSUlmz56dk046KQsWLGgypqKiYpnnGDVqVB577LEkyeDBg/P973+/2XE77LBDDjvssCTJiy++mJ/85CdLjVneXJdccknee++9JMnFF1+cLbfccpnjAQAAAGBtICxtJb797W/n1FNPTZJMmjQpF1xwwQof+/rrr+eiiy5Kkmy//fa58MILlzn+vPPOy+67754kGT16dO69994VnuuPf/xjRo8enSQ56qijctBBB63wsQAAAADQmglLW5GTTjopffv2TZLcd999GTVq1HKPmTZtWk488cQsXLgw3bt3z3XXXdfiPU0blZWV5YorrkjXrl2TLFkpOmnSpOXO9eSTTxZC2V133TXDhw9f7jEAAAAAsLYQlrYiJSUlufTSS9OhQ4d07NhxuaFnkrzyyiv56KOPUlVVleuvvz49evRYobm6detWuAS/R48eqampWe4xTz31VGpqarLxxhvnl7/8ZYv3TgUAAACAtZG0q5XZaKONcsUVV2SrrbZKz549lzt+4MCB6d69ez766KNsv/32KzXXwIEDM3/+/Pyv//W/0r59++WOP++887LJJptk1113TZcuXVZqLgAAAABo7YSlrcDChQtTVlZWWEk6YMCAlTp+l112WeGxCxYsSEVFReEhTgcffPBKzXX44Yev1HgAAAAAWFsIS1uBo48+Oi+//HKSNAkyW3LiiSemrKxsmWN+9rOfZeDAgU22LV68OH369Emy5JL/ysrKZs9TV1dXeH9FgthHHnkk66+//nLHAQAAAEBrJixtBUpLS1NVVZWKiopUVla2GJZ26tRpueeaMWNGkrR4v9PS0tJUVlYW3pYXurakuro6s2fPTpK0a9fuM50DAAAAAFoTYWkr8Ic//GGVnKe2tjbbbLNNkjQbuFZVVeX1119fJXONHTs2Q4YMSdJyMAsAAAAAa5PSYhfA6rEmn1T/WVenAgAAAEBrIixto0pKStrkXAAAAACwurgMvxWoqanJ22+/Xbhf6Yo85Kk5n34wU0vmzp2bmTNnNpnns6xCXbBgwUofAwAAAACtmbC0FZgxY8ZST65fXcaMGZNzzjlnjcwFAAAAAGsTYWkrUVpa2mS1Z0VFxWe6vH3GjBnL3F9SUpLy8vLCitLPuoq1uro6s2fPXunjAAAAAKC1Epa2Ar169VolT6mvra3NNttss8wxBx10UA466KDPPdfYsWMzZMiQz30eAAAAAGgtPOAJAAAAACDCUgAAAACAJC7DL7q6urrMnj07FRUVqays/MxPp18RixYtyvz58wvzVFZWprRUXg4AAAAAibC06D788MPssccea2SuRx55JGefffYamQsAAAAA1jbC0iIrKSlJp06dVtnK0ilTpiRZ8rCnf1dRUZHOnTuvkpWlixYtyvTp05MsWR27ulbDAgAAAMCaIuEqsh49euT5559fJeeqra3NNttskySprq5eav/AgQMzcODAVTLX2LFjM2TIkCTJ4sWLU1VVtUrOCwAAAADF4oaVbdTChQvb5FwAAAAAsLpYWdqGlJeXZ+LEiWtkrm984xtrbC4AAAAAWBOsLAUAAAAAiLAUAAAAACCJsBQAAAAAIImwFAAAAAAgibAUAAAAACCJsBQAAAAAIImwFAAAAAAgibAUAAAAACCJsBQAAAAAIImwFAAAAAAgibAUAAAAACCJsBQAAAAAIImwFAAAAAAgibAUAAAAACCJsBQAAAAAIImwFAAAAAAgSVJe7AKgUfmGGxS7BADWcoXvJRWdk8quxS0GAAD4bEqKt75TWEqr0XXoccUuAYA2oKGuLiW9BicNdcUuBQAA+Cwqnina1MJSAKBNKSkrS9bpVewyAACAz6qkeJGle5YCAAAAAERYCgAAAACQRFgKAAAAAJBEWAoAAAAAkERYCgAAAACQRFgKAAAAAJBEWAoAAAAAkERYCgAAAACQRFgKAAAAAJBEWAoAAAAAkERYCgAAAACQRFgKAAAAAJBEWAoAAAAAkCQpL3YBAEBTDXV1KVk0PWmoK3YpAAAAa15DbVJSnNhSWEqrMfvW36R2+vvFLgOgqMo33CBdhx6XTBuVLHyv2OUAAACseTWfJJXdijK1sJRWo3b6+6l95+1ilwHQOtR8klTPLnYVAAAAa15DfdGmds9SAAAAAIAISwEAAAAAkghLAQAAAACSCEsBAAAAAJIISwEAAAAAkghLAQAAAACSCEsBAAAAAJIISwEAAAAAkghLAQAAAACSCEsBAAAAAJIISwEAAAAAkghLAQAAAACSCEsBAAAAAJIISwEAAAAAkghLAQAAAACSCEsBAAAAAJIISwEAAAAAkghL1wrjx4/PPffcs0rPOXXq1DzyyCMrNHb27NkZNmxYhg0blg8//HCV1gEAAAAArUV5sQtg2Z588sn88Ic/TH19fTbccMPsvvvun/uckyZNyqBBg1JWVpatt946G2200TLHl5SU5LHHHkuSXHjhhZ97fgAAAABojawsbeX69euXrbfeOnV1dfnRj36UyZMnf+5zbr755tlll11SU1OTm2++ebnj27dv3+z7AAAAANCWCEtbuXbt2uX6669Pz549M3fu3Jx66qlZsGDB5z7vSSedlCS5//77M2/evGWOLSsrK7xfUlLyuecGAAAAgNZIWLoWWG+99XLNNdekoqIib775Zn77299+7nP269cv3bt3T7t27fKvf/1rFVQJAAAAAGs39ywtstra2lRXV6eysjLl5S1/Or72ta/lv/7rv1JVVZXvfve7yzxnfX19Fi1alA4dOhS21dTUpLS0tLBKtLS0NL///e/Ts2fPJvPW1dWlvr4+FRUVzZ578uTJadeuXZKkoaEh9fX1qa6uzoIFC/L1r399hV83AAAAALQ2wtIiGzt2bI4//vgkSy5xr6ioWGZomiSXXnpps9vr6+tTV1eXmpqaVFZW5tVXXy3sO//88zN69OiUlZWlvLy8yaX1SQrH1dfXZ+jQoRk+fHizcxx88MEt1jVx4sRl1g0AAAAArZmwtMhKSkpSXl6eioqKwltzYenChQvzySefpKysLOutt16z56qvr09tbW0WL17c7DyVlZWpqqpKWVlZysrKCvcfbWhoSF1dXcrLy1NdXb3MegcMGFAIWhsaGgorYxcuXLiyLx0AAAAAWhVhaZH953/+ZyZMmLDccXfffXcuuOCCbLDBBnn88cdXep4RI0ZkxIgRn6XEJi6//PKss846n/s8AAAAANDaeMATSZLZs2cXuwQAAAAAKCph6RfIa6+9lp/85Ce57bbbltp34IEHZv/99/9Mq1YBAAAAoC0Qln6BvPzyyxk5cmRGjRrVZHt9fX1mzpyZN998M926dStSdQAAAABQXMLSL5B99tknZWVleeONNzJt2rTC9o8++ii1tbVZf/31s8MOOxSvQAAAAAAoIg94aiXmzJmTsrKyVFVVpaKiovCk+hVVW1ubmpqaLFq0KB06dEhVVdVSY770pS9lxx13zHPPPZcnn3wyhx9+eJJk8uTJSZK+ffsmST744IMcddRRzc4zePDgpWo79thjc/DBB69UvQAAAADQ2ghLW4lTTjkl48ePX+64d999N717917mmKuvvjr7779/s/v69++/VFj6xhtvJEn69euXJGloaMiUKVOaPX7q1KlLbVu4cOFy6wYAAACA1k5Y2kp06NAh6623XqqqqlJWVpaysrIm++fOnZuZM2emvLw8G220UZN9DQ0NqaurS21tbRYuXJjy8pY/rbvttluS5Lnnnkt1dXUqKyszceLEJEmfPn2SJO3atUuSdOrUKc8//3yL5xo8eHAmTJhQGA8AAAAAazNhaStx4403LnP/3XffnQsuuCA9evTIww8//Jnn2WKLLfKlL30pH330UV555ZXsvPPOeemll9KpU6dsttlmSZYEtytjWeEsAAAAAKwtpFxfQDvttFM++uijJEvulTp58uTstttuKS1d8ryvlb1fKgAAAAC0BcLSL6Brr7228P6jjz6ahoaG7LDDDkmSxYsXp7a2tkiVAQAAAEDxlBa7AIpn+vTpuf/++5Mk48aNy+DBg7PTTjvl6aefLnJlAAAAALDmWVn6BfHcc89lwoQJmTp1aiZPnpxJkyZl9uzZhf3PP/98unfvnr333jvdu3cvYqUAAAAAUBzC0iKaO3duampq0rFjx1RWVq7Sczc0NGTx4sWpqKhIWVlZXnjhhVx99dVNxvTq1St9+/bNzjvvnL59+2ajjTZKksJl+PPnz89+++3X4hzvvfdekqS+vn6V1g4AAAAAxSAsLaK77747V111VZKktLS0EGw2pzHAfO+999KnT58Wz1lfX5+6urrU1NQkSW677bZ84xvfyMEHH5xrr702O++8c/bZZ5/stttu2XjjjZs9x6JFiwrnmjJlynJfR3V19XLHAAAAAEBrJywtonXWWSc9evRYpedsDEurq6uzePHiwpPtu3XrlnHjxqVjx47LPcfChQuTJJ06dcrzzz/f4rjBgwdnwoQJwlIAAAAA2gRhaREdfvjhOfzww9fYfCsSlCYprEpdUcJSAAAAANoCYSlL6dGjR5588snCqtSWjBo1ag1VBAAAAACrn7CUpZSVlWWDDTYodhkAAAAAsEaVFrsAAAAAAIDWQFgKAAAAABBhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAECSpLzYBUCj8g03KHYJAEVX+H9hReeksmtxiwEAACiGkuKt7xSW0mp0HXpcsUsAaBUa6upS0mtw0lBX7FIAAADWvIpnija1sBQAWpmSsrJknV7FLgMAAKA4SooXWbpnKQAAAABAhKUAAAAAAEmEpQAAAAAASYSlAAAAAABJhKUAAAAAAEmEpQAAAAAASYSlAAAAAABJhKUAAAAAAEmEpQAAAAAASYSlAAAAAABJhKUAAAAAAEmEpQAAAAAASYSlAAAAAABJhKUAAAAAAEmS8mIXAPBF1FBXl5JF05OGumKXAgAAAK1LQ21SUpzYUlhKqzH71t+kdvr7xS4DVrvyDTdI16HHJdNGJQvfK3Y5AAAA0LrUfJJUdivK1MJSWo3a6e+n9p23i10GrDk1nyTVs4tdBQAAALQuDfVFm9o9SwEAAAAAIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIIiwFAAAAAEgiLAUAAAAASCIsBQAAAABIsorD0ueffz69e/fO3nvvvSpPWzRHHnlkevfunVGjRhW7lFVu2rRp6d27d3r37v25zvP++++vkvMAAAAAQLGVF7uAtubaa69Nkhx99NHp3LlzkasBAAAAAFaUsHQZNtxww2y66abp1KnTCh9z3XXXJUkOOuigVh2WVlRUZNNNNy12GQAAAADQaghLl+Hyyy8vdgmrTY8ePfLwww8XuwwAAAAAaDU84AkAAAAAIMJSAAAAAIAkn/Ey/L///e+5+eab88ILL2Tx4sXZfPPN84Mf/CBdu3Zd5nEzZ87MLbfckscffzzvvfde2rdvn+222y6HHnpoBgwY8JlewLI89dRTufPOO/Pqq6/m448/TpcuXbLJJpvksMMOy3777ZfS0mVnxUceeWTGjx+fESNGZPDgwcsc8+/69+/f5OOTTz45p5xySrPn+Otf/5qRI0fm5Zdfzty5c9O1a9fsuuuuOeGEE7L55puv4KtdOdOmTSvUOHHixOWOf+ONN/J//s//ybhx4zJv3rxssskmOfLII/PNb35ztdQHAAAAAGvaSoeld999dy666KLU19cnSUpLS/Pqq6/m5JNPbjFQTJLnnnsuJ598cubMmVM47uOPP85TTz2Vp556KoMGDcqIESNSXr5qbqN6xx135NJLLy18XFpamg8//DAffvhhnnvuuTz55JO57LLLPvc8FRUVqaysLHxcXV1d2F5SUlLYXlZWttSxdXV1Oe+88zJ69OgmdX7wwQe5//7788gjj+SXv/xl9tprr89d5+fx2GOP5fTTT8/ixYsLNb7xxhs5//zzl/k5BwAAAIC1yUpdhv/666/n4osvTn19fXbdddc89NBDee211zJmzJjsvvvuGTVqVLPHvf322znxxBMzZ86cbLHFFvntb3+bCRMm5JlnnsmJJ56Y0tLS3H///fn5z3++Sl7UwoULc/XVVydJ9t133/zlL3/JhAkT8uKLL+ayyy5LRUVF/vSnP+W111773HPdeuutefXVVwtvjR5++OEm24cNG7bUsb/61a8yevTorLvuurnsssvy97//PRMmTMhDDz2UPffcM4sXL87ZZ5+defPmfe46P6sPPvggZ511VhYvXpwtt9wy99xzTyZMmJC//e1vGTRoUIufcwAAAABY26xUWPrb3/42dXV16dSpU379619ns802S0lJSb785S/n+uuvzwYbbNDscdddd13mzZuX//iP/8jvf//79OvXL6WlpenWrVtOP/30nHnmmUmSu+66K2+99dbnflG1tbVZtGhRkmTYsGHZaKONUlpamg4dOuTAAw/MmWeemaFDhzZZ+bmmzZo1K7fddluS5Morr8yBBx6Yjh07prS0NJtttlmuueaadOjQIZ988knGjBlTtDr/+Mc/ZsGCBSkrK8u1116b7bffPqWlpVl//fVz+eWXZ9ttty1abQAAAACwKq1UWPr8888nSQYOHJiOHTs22VdVVZXDDz98qWPq6+vz+OOPJ0m+//3vp3PnzkuNOeqoo9KhQ4fU1dXlr3/968qU1KxOnTplm222SZLceeedmTt3bpP9Q4YMyfDhw7PVVlt97rk+q3HjxhUuaz/++OPTu3fvJm99+vTJggULkiT/+Mc/ilZn4+f861//er785S832VdSUpKhQ4cWoywAAAAAWOVW6gahM2bMSJJsvPHGze7/yle+stS2OXPmFMLKlh5WVFlZmU033TQTJkxYJStLk+Syyy7LsGHDcs8992TUqFHZeOONs/nmm2fbbbdN//79s9lmm62SeT6rd999t/D+p+952px/D3vXpOV9zov97wgAAAAAq8pKhaUNDQ1Jmn9YUUvbG49JsszL3hvHrapL4zfffPM8/PDDef755/PSSy/lzTffzD/+8Y888sgjueqqq3LYYYflpz/96SqZ6/Po2rVrxo0bV+wyWtT4eSktbX4RckvbAQAAAGBts1Jhaffu3fPuu+/m7bffbnb/lClTltrWtWvXdOrUKXPnzs0bb7zR7JPdq6urM3Xq1CRZ6lLvz6OsrCz9+vVLv379CttefvnlHHvssbnrrrvSt2/ffPvb315l862Mnj17Jlmy8nbOnDnp0qXLUmOmTZuW2bNnp0OHDkVbwdm9e/dMmTIl77zzTrP7m/ucAwAAAMDaaKWWBe64445JkoceeqhwP81G1dXVueuuu5aeoLQ0e++9d5Jk5MiRzV5SfueddxYeItQ49vP43e9+l5133jk//OEPl9r3ta99LbvsskuS/38/zlWpqqoqSZb7BPtdd901lZWVaWhoyD333LPU/rq6uhx77LH57ne/mxtvvHGV17miGj/nTz/9dKZPn77U/jvuuGNNlwQAAAAAq8VKhaVHHHFESkpKMnv27Jx22mmFVYXTpk3Lqaee2uLqw5NPPjkdO3bMu+++m+9973t5+umns2jRokyfPj2XXXZZrrjiiiTJ4YcfvkpWlm6zzTaZO3dunnjiidxyyy2ZMWNGGhoasmDB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ZX7/+9+nY8eOSZLZs2dnr732ysKFCwvHX3zxxTnkkEMKHw8ePDgXXXRRtt122zX4KmDl3HTTTbnqqquSJI899lh69erV7LhPPvkkRxxxRCZOnJikaX/stttuufnmm1NWVlYYP2nSpAwaNKjJN5Zbb701u+22W5Il/bbvvvtm5MiRWX/99VfLa4NlGT16dM4777zU1dWlXbt22XLLLTNr1qy8/fbbSZKdd945t912WyorKwvH6APaknPOOSejRo3KVlttlauuuiqbbbZZGhoa8pe//CVnn312FixYkJNOOik/+tGPCsfoAb4I5s+fn8GDB2fq1Knp2bNnHn/88Sb79QFtzdixYzNkyJCUlpamvLy82TGDBw/OhRdeWPhYH9CW/e53v8sll1ySDh065L777suXv/zlpca0th6wspTV5pJLLsnYsWNTVlaW4cOH58UXX8y4ceMyaNCg/POf/8zVV19dGDtu3LgsXLgwP/jBD/Lggw8mWRI0NXr22WfTvn17QSmt2m233dbk63pZzjjjjEycODHt27fPz3/+87zyyit58skns9tuu+Xpp5/O7bff3mT8k08+mfr6+lx44YW56aabkjTtkT//+c/ZZZdd/DBEUfzzn//M+eefn7q6ugwdOjRjx47NyJEjM2bMmFxwwQUpKSnJ888/n1tvvbXJcfqAtmLixIkZNWpUOnXqlJtuuimbbbZZkiU/6H/rW9/KsGHDkiT3339/k+P0AF8EF154YaZOndrifn1AW/Pyyy8nSQ499NC8+uqrzb59OihN9AFt17/+9a9ceeWVSZKzzjqr2aA0aX09ICxltZg0aVLuueeeJMmPfvSjDB06NO3bt0/Xrl1z6aWXZtNNN81dd92VN998M0ny7rvvJkl23HHHfPWrX02XLl0K25IlIdSQIUPW/AuBFbBw4cKcccYZ+fnPf54NNthgueOffPLJ/O1vf0uSXHrppTnooINSWVmZDTbYIL/85S+z7rrr5le/+lXmzJlTOKaxH3baaafsvPPOTbYlyR133KFHKJorrrgiNTU1Oe644zJ8+PCss846hX2HHnpo9tlnnyRNgyJ9QFsyZsyYlJeX54gjjmj2h/KtttoqSfLBBx8UtukBvghGjRqV++67LyUlJc3u1we0RY1h6TbbbLNC4/UBbVVtbW2GDx+eRYsW5etf/3oOO+ywZse1xh4QlrJajBw5MvX19VlvvfWW+gKtqKjIkUcemYaGhjz66KNJksWLFydJqqqqkiTt2rUr3Ndr6tSpmTJlSov3OIJiu/baa/Pggw/ma1/7WuGPBMty9913J0m23nrrDBw4sMm+Tp065bvf/W4WLVqUJ598srC9sUfatWuXdu3aJUmhR8aOHZt111238Ms4rEkLFixIu3btst122+WHP/xhs2MarwqYMWNGYZs+oC05+eST89JLLxVWkP67999/P0nSvXv3wjY9QFv3r3/9KxdffHFKSkpa/IVVH9AWNYalO+ywwwqN1we0VTfccENeeeWVdOzYMZdeemmLfzhrjT0gLGW1eO6555Ik/fv3b/ZmunvssUeS5H/+53+SpPDF3fgFv2jRorRv3z5Jcvvtt+eII45IaakvV1qn0tLSnHbaabnrrrua/CLckr///e9Jkm9/+9vN7v/3/kjS5BtA4719G3vktttuyzHHHPOZ64fPo0OHDvn1r3+de++9Nx06dGh2TONquk+vONUHtDUVFRVN7snbqKampvDQgf79+xe26wHasurq6px++ulZsGBBhg4dmj333LPZcfqAtuatt97KrFmz0r1798ItWZZHH9AW/eMf/8gNN9yQJDn33HPzH//xHy2ObY090PzdhuFzanygx4477tjs/l69eqVjx46ZMmVKkqRnz55JkvHjx2eDDTbInDlz0qdPn8yZMyePP/54fvzjH6+ZwuEzOO2001b4CXuzZs3KJ598kiTp06dPs2N69+6dJIX+SJbukWRJH02ePDnvvPNO9tprr89cP6xOdXV1hfsHfeMb30iiD/jimDhxYi677LJMmDAhvXr1Kqy+1gO0dSNGjMg///nP9OnTJ2eccUbhF+FP0we0RS+++GKSpEuXLjnjjDPy4osvZubMmVl33XWzww475OCDDy4EP4k+oG2qrq7O8OHDU1NTk169euWTTz7JiBEjUl5enu233z577bVX4Q/MrbUHLNVjlVu8eHEWLFiQJNlkk01aHNetW7fMmTMn8+bNy9e//vV06NAht9xyS/73//7fSZJvfetbGTlyZA444IAmq5GgtVnRoDRJZs+eXXi/pf7o0qVLKioqMm3atMK2PffcM2VlZbnooosKl3n2798/d9xxR4466qgWL2mAYhs1alTee++9lJSU5Oijj06iD2j7Ro0alT333DODBg3K008/ne233z533nlnunbtmkQP0LaNGTMmd911V7p06ZJf/OIXLT4NXB/QFjWGpZMmTcrDDz+cLl26ZOedd05paWnGjBmTE044IT/5yU8K4/UBbdHNN99ceD7NzJkz8/jjj2fKlCl54IEHcuqpp+aAAw7Iq6++mqT19oCwlFWuurq68H6nTp1aHNe5c+ckSy7PXHfddfOb3/wm2223XTbYYIOcccYZOeCAAzJy5MgcccQRefrpp7Pffvtlzz33zJ///OfV/hpgdampqSm839gDzenYsWM+/vjjQj9tttlmufbaa/PVr341G220UX72s5+ld+/eeeKJJ3LQQQfl/vvvzx577JH99tsvzzzzzGp/HbAiPvjgg8LTL7/zne8U7hukD/giqK2tLbz//vvvZ8KECYWP9QBt1XvvvZfzzjsvJSUlufzyy5f54Et9QFv0wgsvJFly2fCYMWMyevTo3HbbbXniiSfy05/+NKWlpRk5cmQefPDBJPqAtmfGjBm5+eabkyx5+NJf//rX/O53v8tNN92UJ554IhdddFHefffdHHXUUXnjjTdabQ+4DJ9V7tP3Fm28j0RzGlfjNd6ndKeddsq9995b2P+nP/2psAz7pJNOKow766yzsskmmxQeGAJrk8b+KCkpKTzQrDmN/bFo0aLCJQr9+/dvcr+7X//61znwwAMzadKknH322WloaEiSnHjiiXn00UfTo0eP1fUyYLnq6+vz4x//OHPmzEmvXr3yX//1X4V9+oC2bvDgwRk8eHBef/31/PrXv86YMWNyyimn5Lrrrkv//v31AG1SbW1tzjjjjHz88cc5/vjjm1xq3Bx9QFt00UUX5YMPPmhymXGy5Ov9sMMOy/Tp03PTTTfllltuyf77768PaHPuuuuuLFy4MOXl5bnmmmvSrVu3wr7S0tJ873vfy9SpU3Prrbfm2muvzSmnnJKk9fWAlaWscp8OSFu67Cb5/z8gNd6M99/dcccdOeaYY/LEE09k8eLFOe+883LdddeloaEhjz766KotGtaQxptOL6s3kuX3R3V1de65554cfvjhefTRR9PQ0JDrr78+55xzThYtWpQnnnhildYNK+uXv/xlxo0bl6qqqvziF79ocqWBPuCLYquttsq1116bAQMGpL6+Pj/96U9TV1enB2iTfvWrX+XFF1/MjjvumB/96EfLHa8PaIv69OmTfffdt9kH/iXJwQcfnCSZMGFCZs2apQ9oc5599tkkS1ZXtxRONgacTzzxRKvtAWEpq1xZWVnhl+LGJyA3p/Emvo1p/6eNGzcu7du3z3bbbZe33norSdK3b9/069cvSTJ16tRVXDWsGeuuu26SJZfczJo1q8Vxjf3RkgceeCC77LJLevToUeiRfv366RFahYceeqjw9MuLLroo2223XZP9+oAvkpKSkhx77LFJkg8//DCTJk3SA7Q5zzzzTG6++eZ07do111xzzXJ/6U18L+CL6dO3ppg2bZo+oM1pvAfp9ttv3+KY9dZbL8mSgLNxsV1r6wFhKavFhhtumCRNbsD772bOnJkkzT686fbbb8+QIUOSJPPmzSuM69ixY5NtsLbp3Llz4Wu+pf6YP39+4SFpHTp0aHbMHXfcoUdolV566aWcc845SZIf/OAHOfDAA5caow9oa2prazN58uTU1dU1u//TDyyYN2+eHqDNue+++1JfX5/Zs2dnjz32SO/evZu8HXXUUUmSd999t7DtL3/5iz6gTfr0Mzz+3b+HQb4f0NY0Lpxb1vNrPv312L59+1bZA8JSVovG+4l++mEGn/bWW28V/uLw7zd+nzJlSv71r38VlmY3t/IU1mbL64+XX345yZL/uTf3Tebpp5/Ouuuum6233jpJ0x7RLxTTm2++mRNPPDGLFi3KwIEDc/rpp7c4Vh/Qlhx44IEZOHBgxowZ0+z+9957r/B+4yVpeoC2pLy8PJWVlS2+Nd5rLklhW2lpqT6gTXn00Uezxx575JJLLmlxzLhx45IsuaR44403TuL7AW3L5ptvnmRJrtOSxq/pHj16pGPHjq2yB4SlrBa77bZbkuT//t//m/r6+qX2jx07NknSs2fPdOnSpcm+O+64I0cccUThnhSNzTB//vzCXwMa/zoAa6PG/njooYea3d/YH9tss02z+2+//fYcc8wxhY8/3SPz589PokdY8yZNmpRjjjkms2fPTt++fXPZZZelpKSkxfH6gLbkm9/8ZpLkqquuavYysTvvvDNJ0qtXr2y00UZJ9ABtyyWXXJJXX321xbdbbrklyZKf/Ru3HXjggfqANmX99dfP+++/n4ceeqjZy4mrq6sLTwnv27dv4RJ8fUBb0vgz0ejRozNjxoyl9s+bNy933HFHkmSvvfZK0jp7QFjKatG/f/907tw506ZNy913391k3+LFi3P77bcnyVJPyZwzZ04ee+yxfOc73ylsa/yL2/jx4ws3C/705Wywthk0aFDKysoyfvz4pW40PWvWrNxzzz1Jlu6PJJk8eXLefvvtwjeW5P/3yLPPPqtHKIqZM2fmmGOOyYcffpgtttgi119/fYsPNmikD2hLjj766HTs2DFvv/12jjjiiDzzzDNZtGhR5s6dm+uuuy6jR49Okpx66qmFY/QA6APalh122CE77rhj5s6dm9NPP71JYDpz5syccMIJefPNN1NRUdHkIWj6gLZk3333zdZbb5158+bl2GOPzTPPPJOamprU1tbmmWeeyRFHHJG33norVVVVOe6445K0zh4oabAum9XkmmuuyQ033JDy8vKcffbZ+c53vpMPPvggF110UZ555pmUl5fn/vvvz2abbVY45oYbbsjHH3+c4cOHF7ZNnz49++67bxYvXpxkyYMS7r333sJSbWhtevfunSR57LHH0qtXr2bHnHXWWXnggQfSoUOHXHjhhdlnn33y5ptv5vzzz89rr72WTp06ZcyYMenatWuT484///xsueWWOfzwwwvbXnnllRxyyCGFSwzatWuXRx99tMWnD8Kqdtlll+XWW29NsuRSzMYrA5pz6623ZpdddkmiD2hb/va3v+XUU08t3FOrpKSk8PVYWlqaU045JcOGDWtyjB7gi+LZZ5/NUUcdlZ49e+bxxx9vsk8f0Ja8/fbbOeqoozJ9+vRUVFTkq1/9ahoaGjJ58uTU1NSkc+fOGTFiRAYMGNDkOH1AW/LOO+9k2LBheeONN5KkcLVZ49dkWVlZfvGLX2SfffYpHNPaekBYympTXV2dE044Ic8880yz+88666wcf/zxTbadeuqpOeeccwoPiGr01FNP5eKLL87ixYtz5pln5oADDlhtdcPntSJh6ccff5wjjzwyEydOXGpfSUlJrrrqquy///5NttfX12fo0KG5/vrrl7qx9X333Zerr7467du3z09+8pN84xvfWEWvBpZvyJAhhctjlue3v/1t4amU+oC25p133slNN92Uv/3tb/nwww/TuXPn7LLLLhk6dGh22GGHpcbrAb4olhWW6gPamo8//jg33nhjHn744cyYMSPrrLNOvvKVr+Sb3/xmDj300KXCnsZj9AFtycKFC/PAAw/kz3/+c6ZOnZpZs2ZlnXXWSZ8+fXL88cdnp512ajK+tfWAsJTVqqamJjfeeGNuv/32zJ07N0nSvXv3nHnmmTnooIOKXB0U1/z583PNNdfknnvuyaJFi5IsuTzg3HPPbfYSA2iL9AFfdHoA9AEk+gBaUw8IS1kjFi9enDfeeCMVFRXZYostlnmJJnzRzJs3L5MnT07Hjh2b3JYCvkj0AV90egD0AST6AFpDDwhLAQAAAACSWN4HAAAAABBhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQBJhKQAAAABAEmEpAAAAAEASYSkAAAAAQJLk/wGaUlPSxGKEBgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1500x900 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(15,9) ,dpi=100)\n",
    "sns.set(style=\"white\" ,font=\"simhei\", font_scale=1.1)#会洞三个坐标树不一样的图像\n",
    "plt.barh(df2 .index,1,color=\"orange\" ,alpha=0.6, )\n",
    "plt.barh( df2.index ,df2.values,color=\"#e66765\" ,alpha=1)\n",
    "plt.title(\"异常交易/全部交易的比例\",fontsize=25)\n",
    "plt.xlim(0,0.52)\n",
    "plt.xticks(ticks=np.linspace(0,0.6,num=7),labels=[\"0%\",\"10%\",\"20%\" ,\"30%\" ,\"40%\" , \"50%\",\"60%\"],fontsize=20)\n",
    "plt.yticks(range(len(df2)) ,df2.index ,fontsize=20)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "id": "136ec08e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "商品所属渠道\n",
       "POP    0.294727\n",
       "GO     0.178732\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby(\"商品所属渠道\")[\"异常\"].mean().sort_values(ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "20cea4e5",
   "metadata": {},
   "source": [
    "### 加入新特征"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "id": "a4b72d01",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in[\"商品一级类别\",\"商品所属渠道\",\"订单渠道\"]:\n",
    "    train, test = GroupByFeature(i,train,test,i+\"异常率\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "id": "a40a1abb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>手机摄影数码</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>家具建材</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>131</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>POP</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>220</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>电脑办公打印文仪</td>\n",
       "      <td>POP</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>115</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>家居日用</td>\n",
       "      <td>GO</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>主站</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>289</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID    商品一级类别 商品所属渠道        商品ID    品牌      订单金额  商品销售数量 订单渠道  \\\n",
       "0   1  4283851335    手机摄影数码    POP  8002042497    三星  766000.0     200   主站   \n",
       "1   1  4281111595      家具建材    POP  8002199518  纬度空间     100.0     100   主站   \n",
       "2   0  4106833871      家居日用    POP  8002212182  品道天元    8800.0     100   主站   \n",
       "3   0  4253622967  电脑办公打印文仪    POP  8001748897  清华同方     880.0     100   主站   \n",
       "4   0  4276159555      家居日用     GO  1000341307  乐扣乐扣    4900.0     100   主站   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率  省份     省份异常率  商品一级类别异常率  \\\n",
       "0     0   dakehu_zy    5     0    14  0.275173   0  0.206912   0.261565   \n",
       "1     0  nonscorpio  131     1    10  0.275173  11  0.222260   0.262840   \n",
       "2     0  qq-edf69d7  220     1    16  0.275173  11  0.222260   0.235079   \n",
       "3     0  benson2570  115     0    21  0.275173  14  0.212617   0.215029   \n",
       "4     0   dakehu_zy  289     1    16  0.275173  28  0.236769   0.235079   \n",
       "\n",
       "   商品所属渠道异常率   订单渠道异常率  \n",
       "0   0.294727  0.167849  \n",
       "1   0.294727  0.167849  \n",
       "2   0.294727  0.167849  \n",
       "3   0.294727  0.167849  \n",
       "4   0.178732  0.167849  "
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "id": "f806563a",
   "metadata": {},
   "outputs": [],
   "source": [
    "def EasyEncode(column,train,test):\n",
    "    dic = {}\n",
    "    feature = train. loc[ : ,column]\n",
    "    unique_ = np.sort(feature. unique())\n",
    "    for code,category in enumerate(unique_):\n",
    "        dic[category] = code\n",
    "#如果需要，重建用于覆盖的特征\n",
    "    train[column] = train[ column].map(dic)\n",
    "    test[column] = test[column ].map(dic)\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 215,
   "id": "278b43db",
   "metadata": {},
   "outputs": [],
   "source": [
    "for i in[\"商品一级类别\",\"商品所属渠道\",\"订单渠道\"]:\n",
    "    train, test =  EasyEncode(i,train,test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "id": "eb160c51",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>城市</th>\n",
       "      <th>下单分钟</th>\n",
       "      <th>下单小时</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>5</td>\n",
       "      <td>0</td>\n",
       "      <td>14</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>nonscorpio</td>\n",
       "      <td>131</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>qq-edf69d7</td>\n",
       "      <td>220</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>benson2570</td>\n",
       "      <td>115</td>\n",
       "      <td>0</td>\n",
       "      <td>21</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>dakehu_zy</td>\n",
       "      <td>289</td>\n",
       "      <td>1</td>\n",
       "      <td>16</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌      订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4283851335       5       1  8002042497    三星  766000.0     200     1   \n",
       "1   1  4281111595       2       1  8002199518  纬度空间     100.0     100     1   \n",
       "2   0  4106833871       3       1  8002212182  品道天元    8800.0     100     1   \n",
       "3   0  4253622967      10       1  8001748897  清华同方     880.0     100     1   \n",
       "4   0  4276159555       3       0  1000341307  乐扣乐扣    4900.0     100     1   \n",
       "\n",
       "   支付方式      下单用户ID   城市  下单分钟  下单小时   支付方式异常率  省份     省份异常率  商品一级类别异常率  \\\n",
       "0     0   dakehu_zy    5     0    14  0.275173   0  0.206912   0.261565   \n",
       "1     0  nonscorpio  131     1    10  0.275173  11  0.222260   0.262840   \n",
       "2     0  qq-edf69d7  220     1    16  0.275173  11  0.222260   0.235079   \n",
       "3     0  benson2570  115     0    21  0.275173  14  0.212617   0.215029   \n",
       "4     0   dakehu_zy  289     1    16  0.275173  28  0.236769   0.235079   \n",
       "\n",
       "   商品所属渠道异常率   订单渠道异常率  \n",
       "0   0.294727  0.167849  \n",
       "1   0.294727  0.167849  \n",
       "2   0.294727  0.167849  \n",
       "3   0.294727  0.167849  \n",
       "4   0.178732  0.167849  "
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "id": "ebcbb3d8",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train.csv')\n",
    "test.to_csv(r'test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7dfd05b",
   "metadata": {},
   "source": [
    "# 订单金额和销售数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "id": "4c43722a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "异常\n",
       "0    606.823929\n",
       "1    902.707100\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 218,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"异常\"])[\"订单金额\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "id": "34058f96",
   "metadata": {},
   "outputs": [],
   "source": [
    "ab = train. loc[train[\"异常\"]==1,\"订单金额\"]\n",
    "normal = train.loc[train[\"异常\"]!=1,\"订单金额\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "id": "b611f1ed",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     19915.000000\n",
       "mean        902.707100\n",
       "std        5790.468611\n",
       "min           0.500000\n",
       "25%          49.000000\n",
       "50%         118.000000\n",
       "75%         688.000000\n",
       "max      766000.000000\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ab.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 222,
   "id": "46aec669",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count     71953.000000\n",
       "mean        606.823929\n",
       "std        2160.500859\n",
       "min           0.500000\n",
       "25%          21.900000\n",
       "50%          89.900000\n",
       "75%         338.000000\n",
       "max      383000.000000\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 222,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "normal.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "id": "4f03cafd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsEAAAIxCAYAAACsI2VtAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAxOAAAMTgF/d4wjAAB5oUlEQVR4nO3dd3xUVf7G8edOSReiKCiCFKkqqCjCCqI/K6sBRCkitjUgiLjIiiWKUkQR26LCAhZWZVVcUVcp1hVBUJQmBAsIqyJILwnpM3Pv74/JDBlSJiEzyR34vF8vlZm5k5z5TiJPTr7nHMOyLEsAAADAUcRR2wMAAAAAahohGAAAAEcdQjAAAACOOoRgAAAAHHUIwQAAADjqEIIBAABw1CEEAzGiqKhIh+5o+M477+jll18OuW/v3r2H9fH37Nmj9957T7/99tthj9HuCgsLNWXKFOXk5JR6bOPGjXrxxReVnZ1dpY/p8XiUk5Mjj8cTqWFKstf7UVRUFJWPm5+fr//85z9lPvbVV19p0aJF1fr4dqhdZVV3t9KNGzfq559/jtBogKODq7YHABypZs2apQkTJlTpOQsXLlTDhg1L3e/xeDRkyBC1adNG9913X/D+jz76SJs3b1Z6enrwvjvuuENJSUmaPn263G53pT/3K6+8ohdeeEEDBgzQ2LFjqzTuoqIi/f7771V6TuPGjRUXF1el51TX77//rpkzZ2rVqlWaMWNGSH3eeecd/fOf/1Tr1q3VrVu3Mp/v8/k0bdo0xcXF6bbbbpMkLVmyREOHDg37uR0Oh55//nldeumllRqrXd6Pn376SUOGDNEjjzwSrEtRUZG8Xq8SEhLkcJQ/l+LxeFRYWKjk5GQZhlHq8Y8++kj333+/DMNQr169Qh57/vnntWrVKs2ePVtnn312lV6LJG3YsEG9e/dWWlqaJk2aVOXnf//993r44Yd1xRVXBN9rSSooKFBRUZHi4+PldDpDnuP1euX1epWSklLux127dq02bNignj17Ki4uTkVFRbrtttvUokULjR49usrjDHjppZf03nvvafLkyfrzn/9cqeeYpqlffvnlsD+nJDVr1qzCrwHAzgjBQJQkJCRIkqZOnapmzZpVeO3bb7+tf/7zn0pNTS3zcbfbrTPPPFPTpk1T69atdfXVVwfvLxlcli9frlWrVmnUqFFVCsCS1K9fP7300kv64IMPdO+99yopKanSz/3999915ZVXVunzzZs3Ty1btqzScw5HTk6OnE6n3G63mjdvroyMDL3zzjvas2ePTjzxREnSvn37NHv2bF133XXq1q2bTNMMBpqSdXA6nVq2bJm+++47devWTW3atFGnTp20cOFCxcXFyeFwaN26dTrjjDMkSbm5ufrLX/6i33//XaNHj650AJbs835YlqWCggLdcccdmjFjhs4//3zNmzdPGRkZlf7YS5Ys0QknnFDq/t69e2vOnDl6/PHHdfHFF+uYY46R5J/VXLVqldLS0g4rAHs8Hj300EPy+XxaunSpfvnll7Dfg4dq2rSpNm7cqJSUlJAQ/Prrr+uJJ54o93nnnXeeZs2aVe7jL7/8sj755BOdccYZatOmjeLi4lSvXj29/fbbGjRoUPBrsiry8/P1+eefq2nTprriiisq/by8vLwqf50cauXKlRWGfsDOCMFAlARmiU4++WSdeuqpFV573HHHSVKFwfXOO+/U8uXLQ/7CcTqdITNszzzzjM4991wNGjSozI+Rn58fnKk6dGaucePG6tOnjxISEpSbm1sqdFmWFWwjCISVgEDgnzhxoq655poKX+v777+ve++9N/icaLvyyiu1Y8eOUvdfeOGFpe5788039eabbwZvd+jQIeS2JD388MPq3bu3HnjgAf373/9WUlJSsFarVq3S0KFD9Ze//EWjRo3S6NGj9fvvv2vIkCEaOHBgqc8XC+9H27Zt9eqrr2rgwIEaNmyYZs6cqbPPPluPPfaY4uPj5XId/Gtk9uzZWr9+vR566CFZliWfz6fCwsJS4ytp5MiR+uyzz+Tz+UI+TmJiou65554Kx16eRx55RGvWrNGUKVP01ltv6aabbtIrr7wS9vtw8ODBWrx4cch9y5YtU+vWrYO333//fb3wwgtKSEjQzp07NWrUKA0dOlQXXHCBCgsLK/xhZf369frkk0+UlpamNm3aBO//61//qo8//ljjxo3TtGnTyn3+77//LtM05XK5QmahFyxYoKysLP3lL3/Rzp07Sz3PsiyZpimfzyfLstSkSRNJB/9/M3z4cN15550hz3nqqafUqVMnXXDBBWWO5R//+IeeffbZGv9tDhBJhGAgyrZu3Rr2L4pAH6/X6w0Jwv/617/0yCOPhFy7YsWKUs8v+Ze0pJC/YO++++7gTNaHH36ojIwMOZ3OUr/KLWn27Nml7vN6vTJNUwMHDtTDDz8c8ljgY2VkZFR6hrCsX49HwxtvvCGHw6Hs7GydcMIJMgxDEyZM0K5du4JtBsOGDVOXLl00cOBAWZalJUuW6LzzzivzfWvVqpV69eqlNWvWaP/+/Tr++OODj5122mk6++yz9dJLL2nlypVavXq1brnlFv3tb38rc2yx8n60adNGzzzzjEaNGiWfz6dmzZqVObP65ZdfavPmzWFnF6dOnarnnnsu5L5//vOfpa4r+YNKRkaGbrnlljCvQnr22Wf11ltv6YEHHtCll16q888/X4MHD9bAgQM1efJkde7cudznJiYmql27dpo0aZK2bt2qk08+OfjY4sWL9fjjj6tFixbB768vvvhCknTNNdcEg2V5LMvSxIkT5XQ69de//jXksSZNmuiWW27Riy++qFmzZunGG28s82M88MAD+vbbb8v9HJMnT9bkyZMrHEfLli01b948SSr3a27u3Ll68cUXtW3btlLtWQ0aNCj1gzgQqwjBQJQFeh5N05RlWcFZmcDtwH8l/6/lExMTg88NzM698sorql+/fpU+b25urvr27Rsyw3fmmWdq7NixwV5On8+n1atX69xzzy3zYyxdulTnn3++DMNQUVGRsrOz1aJFi3I/59/+9rewv/JfuHChnnzyySq9lupo1KiR3n//fT366KOaP3++TjjhBMXFxSkpKSk4M+h2u3Xsscfq1FNP1ffff6+JEydq7NixGjBgQJkfc9iwYUpISNDxxx+vAwcOhMy+jRw5UoMHD9bq1avVtWtX9evXT5s2bZIkxcXFqXHjxsFrY+n9uPDCC/Xpp5+W27JTFYGvybffflvJycnB+2+55RadffbZGjFiRPC+nTt3Vir8mqapJ554Qv/85z9199136+abb5YkJSUl6YUXXtCdd96p9PR0paen6/bbbw/5PgsoKChQYmKi4uPjNWzYMF166aXBUGlZlvLz84N9zpK0bt06NWjQQMcff7xyc3NlGEa5M8FvvPGGvv76a/3lL38J+RoIGD58uBYuXKiJEyeqQYMGuvzyy0td8+yzz0qSXC6XHA6HDMPQpEmT9NZbb+nFF1/UOeecE7ZOJUOry+Uq9cPPjh07gmsZ5s2bFwzMkr+WH3/8cUgIph8YsYwQDETZrFmz1LZt20pdm5mZqZ07d+qss86SdPAvrMaNG+vYY48N/uUbTnx8fMivlwNOPfXUkF8JP/zww/r3v/+tE088UXfccUfItVOmTNH777+v/fv364knnqgw/AR2D0hJSSmz97OkwK/Gq7savirOO+88eTwePfHEE2ED31tvvaXk5OQKeysbNWoU/PN///vfkMWKJS1ZsiRkVrRNmzZ6//33g7ft/H4EQl/JxW+RCMDSwa/rpk2bqk6dOsH73W63jjnmmJCaxMfHh/14e/fu1T333KOvvvqqzB9ekpOTNWPGDI0fP14zZszQ+++/r7/85S/q27dvSAifOnWqLMvSnXfeKdM0dc0112jXrl2SpLp16+q2227TTz/9pGuvvTbk43fo0EGSPySuXr261Ph+++03PfXUUzr55JM1fPjwMl9DQkKCpkyZouuvv1533XWX7r//ft10000h1wTapgJ++uknzZkzR5dccklw0eK1116rpKSkCvuSSyoZYnNzc3X77bdr//79GjVqlAYPHixJWrRokYYMGaJ77rmn1A/jNfUbHSAaCMFAlAT+cvn+++/VsmXLkN7JspimqX//+9/6z3/+o88//1wnnHCC8vLygo8/8cQTZf5avCwDBgwI/gq+oKCgzM/16KOP6q233lLz5s1LrcyX/LNyv/zyi+bNm6devXrpySef1HnnnVfm5wuE8/Hjx2v8+PGVGmN+fn6lrouEk046Sf3799ebb76p+++/v9zrdu7cqffee0+DBw8uFTgkf2uL2+2W0+lUcnKyEhISgoFu7dq1wcD297//Xe+9915If+n48eO1du3aMj+vHd+P3bt3q2vXriH3tW3bttwtzaoi8L3x66+/hoRQj8ejAwcOBGfOJZXZ41ry+nfeeUd///vflZubqw4dOqiwsFBvvPFGqXBmmqaaN2+utm3bat++fZo4caKeffZZXXzxxXrkkUeUlJQkt9utV155JdjmEAiBkv9r6JNPPgm+x/379w9pgVixYoW+++67UmPMzs7W7bffrsLCQj355JMVLiJr1qyZXn31Vd1666169NFH9dVXX+mhhx4KacsIyM/P13333af4+PiQlpdwrTXlyc3N1c0336zNmzdryJAhevrpp5WcnKwOHTro3nvv1dVXX63rr7++yh8XsDNCMBAlZ599tlJTU/Xggw/qwQcfrNRzDMPQiBEjgrN311xzjS6//HIdd9xxSkxMVP369UvtC3yo9PR0JSYmqk6dOvr+++9L/YW4b98+PfDAA/r888913nnnacqUKSFBJCAlJUX9+/fXeeedpwkTJujmm2/WsGHDSi2gkfx/eS9ZskQ7d+7UzTffrJNOOkkvv/xyhbNExx57bMjtrVu36pJLLtHQoUN11113hTyWlpamuLg4vfvuu8H7Fi9erGnTpmnjxo2yLEtt27bViBEjQloJ1q5dGwytXbp0Ufv27bV//34dOHBAeXl5wbDl8Xi0b98+ZWVlKS0tTRdccIF+/vln+Xw+FRUVqX379pL8Ozbs3r1bkvTggw/qpptuCtb3l19+CfZz79+/Xz6fLyTMZWdnl7nw0a7vR2pqqt555x3Fx8fL4XDowQcfLPO3C4cjEIL79u1b6rGPP/5YH3/8cdiP4fV61a9fP/3www9q0aKFXnnlFQ0ePFjPPvtssF0gOztbLpcr2KLg9XpVUFCg1atX67333tMbb7wRsrDxP//5jyZNmqRrrrlGAwYMUPv27bVy5UrdfPPNGj16tOLi4oJ94t27d9epp56qzZs3q1WrVnI6nfr+++9Dxpidna3Bgwdr06ZN6tu3r7744gt9/fXXYVsIBg0apA8++EALFy7Ud999p48++qjULHxGRoZ++uknpaenq6ioKORrubCwMORrL6CibQmTk5N17bXXqmXLljr33HPldrs1btw4xcfH6//+7//06KOPhn1PgFhDCAaipEmTJvrqq6+UlZVV6eckJCSE9BQmJiaG9C46nc6wWygd2vNXUk5Ojvr376/ffvtNV199te69917df//9at68eamV+EuXLtWtt96qUaNG6dVXX9Xw4cPLXfwTWK3+8MMPKy8vT3fccYcOHDhQ4Tizs7NVp06dYOA/+eST1bFjR82fPz8kBK9fv14///yzHnjggeB9a9eu1dChQ9WmTRvdddddMgwjOIO7YMECnXTSSZKkgQMHyul0Ki4urswAWHJma/78+Zo/f74k6fPPP5fk3xe4oKBA3333nVwulx577DE5HA7dcccdwfclUO+yZm8PXSB26Mytnd8Pt9sd3OpN8n9tRupAENM0Jfm39CvZDnHxxRfrT3/6U0jg2rJliy655JJSH8Plcmn06NH65ptvNGjQIMXFxWnJkiUh11x22WU655xz9Pjjj5d6fv/+/dW/f/9gsC8sLNTs2bN16aWX6oILLlDfvn31pz/9SZs2bVLv3r3L7K1euXKlRo4cqVdeeaXM1/nRRx9pzZo1GjhwoM4///xSLS7luf766/Xmm2/q0UcfDf4wHWBZlsaNG6cPP/xQkn/LtbJ+MC5rceL8+fMr7CEfMGCALMvSxx9/rM8//zy4+8eqVas0bdo09e3bVw0aNKjUawBiASEYiCKn06njjjtOkydP1ooVKzRx4sSQRTFr167VXXfdpVtvvVU33HBDhR8rPz9f27ZtU8eOHcN+3vJaDVJSUjRjxgwtXLhQt956qyT/QphvvvlG6enpwRYAy7L0zDPPKDExUd27d1fjxo313//+t8zFRIHXMXLkSG3ZskWSQhY2VeTWW28N6aft2bOnRo8erbVr1wZnX+fPny+Xy6W0tLTgdStWrJDP59Njjz0WXKl/wQUX6MUXX9S+ffuCITgzM7NS46iswG4FJX/lXJV2iENP9LL7+3GoSC2CCoTg6jrnnHMqtRisIoH3Lz4+Xv/6179kmqbi4uK0YcOG4HZlW7Zs0Y8//liqtz8QoE866SStX7++1Mfu16+fTj31VHXo0EFer1ffffed4uLiNG3aND3//PP65JNPQn6Q+fXXX3XFFVeoQYMGio+PL9XKUlRUpIcffljvvfeerrjiCi1btky9evUK+U3TgAEDlJSUFBKM3333XWVkZFS4S83q1auDi/d27dqlP//5z3r44YfVpEkT/eMf/9D06dP1/PPPq0mTJmVu9wfEIkIwEGF5eXlyu90hK6/z8vK0cuXKUouUHA5HsM9U8oeDwGlch/YO3nPPPaUW1Tz00EPasmVLqe2lygtHkkptbzVixAjddtttev755zVmzBhJ0quvvqp169Zp3LhxwdBe1sfcvXu3ZsyYoddff10NGzbU22+/rfbt2+u3335T37591adPH917773KycnR5ZdfrrPPPltTp07Vrl271LVr15DtxSTpz3/+syZMmKD58+eHhOCuXbuqXr16wes6dOggwzD09NNPa+DAgWrbtq0aN25cbv/r8uXLw/6Qcaj3338/ZKu58gSCYWXaIcpi5/cjWgI9y2X9QDdnzhzNmTOnSh/vq6++0vr164MHlgTk5OTol19+CdnrOfA91qRJE1188cUhH8flcik7O1tPPfWU/vWvf+mGG25Qq1atNHXqVF1zzTXq27dvyG8PAv32Jb82DxUI6W63O/j1sWXLFrnd7lK9voFFeGXNtu7evVvDhg3TmjVrdNlll+npp58u1bMdTkX7kDdu3FirV6/WlVdeqWuuuUZbt27VwIEDdckll+i6667T7bffrvnz52vevHnq0qWLPvnkkyp9bsCOjvoQvG3bNvXt27fUr9GqYufOnerdu3fIfTk5ORo8eHC5K4Fx5LrhhhtK9QYGnHnmmWXe//DDD4fs9Xr88cdr6dKlkio+Atfj8cjn85UKWNnZ2dqxY4dOPPHEMvtLS7rwwgt16aWXavbs2erevbucTqeeeuopde/eXdddd12Fz128eLFef/119e/fX6NGjVJycrJ27dqlYcOGqVGjRsG2hhdffFF79+4Nfj/88ccfklTqh4KUlBRdfPHFWrBgge677z6tXbtWW7Zs0d133x1y3VlnnaWnnnpKr7zyiu644w55vV41atRIAwcODM6olhRoC3n44Ycr3CdWOrhlWGUPAfB6vZIOrx2iLHZ6P6KlX79+ZbYXlLVFWkBFAX3RokV68803g/3LAdnZ2crJydGvv/4avC/Q5929e/eQEJyTk6Np06bpzTfflGEYevTRR4Mh8/zzzw8uvisZJLdv365jjjkmuMNGZWe4V69erTZt2pRqVwqE4LJano499lh16NBBp556qiZMmHBYi98q6gk//vjj9dlnnwVv169fX3fddZdmzZqlTz75RHfeeaeGDx8e3LGCEIwjwVEdgjdt2qS77ror+D+ew1W/fv1gYJH8sxxXXnllpc9vx5Fl2LBhys/Pl9PpDP6FPHHiRJ1wwgmlTnLbunWrnnjiCQ0cOFDnnXdecJaq5F/kW7duDXv4QHmPT58+Xf/3f/8XdsyPPvqoevXqpb/+9a+yLEvNmjXTY489FvZ511xzjc4///zgX9pffvml7rvvPp100kmaOXOm4uLi9N1332nmzJnq169f8NfJW7dulaRg20JJvXr10oIFC7R8+XJ9+umnwWB8qLS0NKWlpamoqEgbN27UrFmzNGnSJNWrV69UIA2EjQYNGoQ9NWzdunUhzwknEIIPpx2iPHZ6P8qye/duvfbaa+UeAlKegoICuVwuHXvssaUW4kllb5EWYFlW8Lckh+7Fm5GRofvvv18ffvhhyPfCoT3BBQUFmjlzpm699dZSJ+QlJiZq48aNatOmjVauXFlqF5FAu82GDRuC92VmZgZ/YyGpUj3T33//vX799deQo5gDAjthlLUnuNPprHBnk0h65513tH37dl122WW65ZZb9P777+uiiy6qkc8N1KSjOgTPnDlTY8aMiXh/02uvvaauXbuG/csWR6ZDZ7h++eUXbd++Xbfccou6d+8e8tiPP/4oSTrjjDNKPRYQmJGcMGFCqdX0f/3rX/Xbb7+F7D0r+XtmBw4cWOmjiZOSknTmmWcGV+WPGDEi7AxywIknnqjly5dr+vTpWrp0qfr376/77rtPSUlJ2rp1q4YPH64TTzwxZKFXYOaxrNAVaH14//33tXjxYnXv3r3U67j//vu1evVqzZ8/X3FxcTrttNOUkZGhd999V5mZmaVCcGD2rrILk6TK97+Gm/0rKCjQb7/9pszMzArbVEqy0/txqC1btig9PV3bt2/XbbfdVuGWX4f629/+pv/+978VXhOuHeKiiy7SjBkzSt3/1ltvacyYMSooKCj3qOjPPvtMzz77rAoLCzVy5MiQx5xOp2bMmKENGzaoR48eIf26N954Y3BxZWpqqoYPH664uLjgvsQ//fSTTjvttFIfsyyTJ0+WYRilfnsoVdwOUZbAD2DhBBZFljUTXNZ+3ZmZmXr33Xf13HPPqXnz5kpLS4vYokjATo7qEDxhwoQy/6fwwgsv6K233lJeXp4uueQSjRkzpsJeqpIKCgr06quv6u233470cBGDTNPU2LFjlZSUVOavyyujOouRwj3XNM1gMNi0aZP69++vzMxMjR8/Xl988YVuueWW4All5ZkzZ45Gjx6tc889V6+99lrwV/6ZmZm6/fbb5fF49MorrwR/ZSz5Q1d5O124XC5dddVVeu211ySV3WbQsWNHvffee0pPT9fll18ul8ulBQsWSJI6depU6vrA+KvSDhHuMI9169apd+/eYYPIzp07de2118rj8YTsO1sWO74fAZZladu2bbruuuuUl5en559/vkoBWJJ69+6tP/3pT3I6nWW+hsmTJ6t58+bq2bNnqcdM05TX6y03IPbu3VuvvfaaHnvsMXXp0qXM62bOnKmGDRtqyJAhVRq3dPAHqQYNGujOO+/U3XffrQYNGqh9+/a64YYbdMopp2jmzJkVfoyXXnpJixcvVp8+fdS8efNSj2/btk1JSUmVrmu4YPr666/rk08+UWZmptxud6lt1gInVh5q7Nixuueee/Tpp5/qnXfeCR5xXdYPkV6vt9K/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Sk1NrfR4XC6X6tWrF4FXBgAAgGiJxgxwQI1Mg7Zu3Vr16tXThAkTtGLFCj355JO6+uqrK3xO//79NW7cOH377beaNGmSUlJS1K5dO6Wmpqpr167KyMjQqlWrNG7cOPXo0aNKM8EAAAA4uhlWJI8Nq8CePXv01FNP6fvvv9eFF16oESNGaO3atRozZky5O0XMmjVL7733nurXr6+MjAw1adJEkn9B27PPPqtly5bp7LPP1r333qvk5OSaeBkAAAA4AtRYCAYAAADsglVhAAAAOOoQggEAAHDUIQQDAADgqEMIBgAAwFGHEAwAAICjDiG4hqxYsUJpaWnq0qWLHnvsMR2Jm3Js27ZNXbt2Dblv9uzZuuCCC3TxxRfr/fffD97v9Xo1duxYde7cWT179tQPP/wQfGznzp269dZb1blzZw0ePFj79u0LPlZRHcv7XHYxZ84cde3aVW3bttWNN96oHTt2SKJGJW3btk0ZGRm6/vrrNWHChODpkNSotPz8fHXv3l3ffPONJGpU0pgxY3TeeeepS5cu6tKli+655x5J1Kg8I0aM0JNPPhm8TZ38Pv744+DXUOCf0047TcuXL6dGJbz++uv6v//7P3Xu3FnDhw/X3r17JcXI15GFqNu/f7/VsWNH691337V8Pp/1t7/9zfr3v/9d28OKqI0bN1ppaWlWq1atgvctW7bMOvvss63169db2dnZVlpamrVx40bLsizr+eeft66++morKyvL+vHHH63LL7/c8ng8lmVZ1g033GA98MADltfrtd544w1r1KhRlmVVXMeKPpcdrF271rrwwgutVatWWQcOHLCGDBli3X333dSohKKiIqt79+7W7NmzrV9//dW66667rPvvv58aleOhhx6yWrVqZS1btowaHaJ3797Wjz/+GHIfNSrb/PnzrUsuucTKz8+3LIs6VeSnn36yLrvsMuvLL7+kRsV++eUX6/LLL7eysrIsj8dj3X///dbo0aNj5uuImeAasGjRItWvX1+9e/eWw+FQenp6uQeExKqZM2dqzJgxIffNnTtXV199tVq1aqVjjjlG1157rT788ENJ0gcffKAhQ4aoTp06atOmjZo3b67Vq1drx44dWr58ue6++245nU71799fX3/9tYqKiiqsY0Wfyw7cbreee+45nX322UpJSdEll1yiLVu2UKMSdu3apf79+6t///5q0qSJ0tLS9L///Y8aleHzzz/X6tWr1b59e0l8r5VUWFiozZs369RTTw25nxqVtnv3bo0fP17jx49XQkKCJOpUkaeeekp33XWXPvroI2pU7KefflKbNm1Up04duVwude7cOab+biME14Bt27apXbt2wduNGzfWpk2banFEkTdhwgSde+65Ifcd+robNWoUfN1//PFHqZps3LhRf/zxhxo2bKjjjjtOkuRwOHT88cfr999/r7COFX0uO2jTpk0wsEjSwoULde6551KjEho2bKhbbrlFkv+1v/LKK+rZsyc1OsSuXbv0yCOP6Omnnw4GF2p00Pfffy+fz6crrrhCHTt21ODBg7Vjxw5qVIbx48fLNE3961//0kMPPaRff/2VOpUjMzNTW7Zs0Z///GdqVEKbNm30zTff6KefftLevXs1Z84cXXTRRTFTI0JwDTBNU3Xq1AneTkxMVFZWVi2OKPIMwyh136GvOykpKdjjaVmW6tatG3wsMTFR2dnZMk0z5P5DHyuvjhV9Lrv54osvtHLlSt16663UqAxr165Vv379tHPnTl1xxRXU6BAPPPCABg0apFatWgXvo0YHFRUV6aabbtLcuXO1dOlS1a9fX4899hg1OkRmZqY+/vhjpaWlacCAATIMQ9dddx11KsfLL7+sv/zlLzIMgxqV0LRpU11wwQW6++67NWjQIOXk5Ojqq6+OmRoRgmtAampqyBuSn58vh+PIL31qaqoOHDgQvJ2Xlxd83eXV5ND7A485nc4K61jR57KTP/74QxkZGXr00Ud13HHHUaMytG/fXosWLdL//d//6e6776ZGJcyaNUtut1sDBw4MuZ8aHdS5c2eNHDlSycnJiouL0y233KLFixdTo0OsXLlSLVq00MMPP6wLLrhA48ePV2Jior799lvqdIi9e/dqyZIlSktLk8T3W0lz586Vy+XS/Pnz9e6776pfv34aNGhQzNTIPpU8gnXo0EErVqwIrmRcvXq1GjVqVMujir4OHTro22+/Dd7+7rvvdPLJJ1f4WNOmTVVYWKitW7dKkg4cOKBNmzapYcOGFdaxos9lFwcOHNDQoUN1/fXX69JLL5VEjUraunWrVq1aJUlyOp3q1auX1q9fT41KmD9/vlatWhVcqb569WrdeeedOvXUU6lRsUWLFul///tf8Pb27dvldDr5OjqE2+1W48aNQ+6Li4vT/fffT50OMW/ePF1wwQVKSkqSxP+3S1q+fLlat24dvH322Wdr7dq1sVOj6q8NRGX079/fGj9+vLV8+XIrLS3NmjFjRm0PKSpK7g6xe/duq1OnTta///1v65NPPrHOPfdca+XKlZZlWdaXX35pXXDBBdbixYutGTNmWJ07d7YOHDhgWZZlPf3009YNN9xgrVixwho5cqR16623Bj9meXWs6HPZQVFRkTVgwADrb3/7m2WaZvB+anTQhg0brPPPP9/6+eefLdM0rccff9waPnw4NarADTfcYC1btowalfDyyy9b6enp1r59+6ytW7da/fv3t0aPHk2NDrF582arc+fO1oYNGyzLsqwFCxZY5557rrVlyxbqdIgbbrjBeu+994K3+Vo6aObMmdY111xjrV271vrhhx+soUOHWpdffnnM1IgQXEN2795t3X///VaPHj2sp556KrgdyJGmZAi2LMtat26dlZ6ebvXu3dv6z3/+E/LYvHnzrL59+1o33XSTtWbNmuD9Ho/Hev75562ePXtaf/vb36xdu3YFH6uojhV9rtr23//+12rVqpV13nnnWeeff751/vnnW1deeaVlWdSopA8++MC6+OKLrS5dulh33nmntXfvXsuyqFF5AiHYsqhRgMfjsR588EHrrLPOsrp162Y98sgjVk5OjmVZ1OhQCxcutHr16mV16tTJ6t69u/XVV19ZlkWdSsrNzbVOP/10a8uWLSH3UyO/goIC68EHH7Q6d+5snXbaaVbv3r2tH374wbKs2KiRYVlH4KkNAAAAQAXoCQYAAMBRhxAMAACAow4hGAAAAEcdQjAAAACOOoRgADjCmaZZ20MAANshBANAlHg8Ho0bN05btmwJ3i4qKirzWtM0lZ+fH3Lf/v379c4774Tct2vXLs2cOVN5eXmVGsOSJUt01VVXhZyoVJH58+fr9ddfD972er2lxuzz+eTxeCr18QDArgjBABBFv//+u2666Sbt2LFDc+fOVbt27YL/nHHGGWrdurXOOOMMnXHGGTrrrLNCjgb1+Xx66qmn9OWXXwbve+edd/TPf/6zUrO7e/fu1cMPPyxJ+sc//lGp8W7dulVvvPFG8Pb777+vTp06qVOnTmrTpo3OPfdcderUSePGjatsCQDAltgnGACiKD8/X/3799dJJ52kadOmyTAMGYYhSdqyZYv+/Oc/KzMzU5I/9DqdzpDnv/322/J6vRowYIAsy9Kll16qESNGqGfPnmE/76BBg9S8eXM9+OCDSk9PV6tWrfTggw/K5XKFXPvTTz/p2muvVcOGDUPu37Fjh15++WV17NhRXq9XZ555phYvXqx69epVtywAUOsIwQAQZb/++qscDodOOeWUkPsPDcEl3XDDDVq9erUcDv8v7LxerxwOR/C2aZrq0KGDZs2aVeq5+/bt0/Dhw9WwYUM9/vjjcjqdys3N1V133aWcnByNGzdOrVq1Cl6/YcMGDR06VDNnztS///1v3XnnnUpMTFRGRoYGDBig9u3b63//+5+GDh2qTz75JJKlAYBaQzsEAESB1+uV1+uVJDVt2rRUAA7H7XbrkUceUWZmpjIzM9WrVy+NGDEieHvs2LFlPm/ZsmW69tprdcopp2jixInBmeXk5GT94x//UOvWrdWzZ0+lp6fr008/ldfrVaNGjfToo49q5MiRmjNnjq677jr16tVLnTp1UmJiovr376/PPvtMl1xyif71r3+pR48e5fY2A0CsYCYYAKJg4cKFGjp0qJxOp3w+n2bMmKGLLroo5JqKZoLT09O1atUqxcXFSZLy8vLkdDoVHx8vSSoqKtIZZ5wRnAn2eDwaMWKEli5dqqFDh2ry5MlyuVwyDEMej0dxcXGyLEter1ePPPKIli9frlWrVundd99Vfn6+Bg8erM6dOystLU2S9Ne//lVz587V9u3bNWTIEM2bN0/z58/XlVdeqY4dO2rdunXBWWkAiEWu8JcAAKrqoosu0vr16yVJ3bt3D4bXqnjooYd0zTXXSJLuv/9+NW/eXLfddpskf6/wBx98ELzW7Xbrmmuu0X333acmTZrotttuk9Pp1N69e/WnP/0pGLQD8x59+/YN9iDv3btXV1xxhU4//XQNHjxYpmnqnnvu0THHHKOdO3dKkg4cOKDRo0friiuukCQCMICYRwgGgCgILH4LqGpoPJy9fS+99FJ5vV7l5uYGZ34DHyfQmmFZljwej1wuV3CWuWnTprrjjjv07bffyuVyqXnz5nrssceUlZUVnL0uLCxUamqq6tSpU+VxAYAdEYIBwIaSk5P19NNP6+mnn5bkn4l1Op169dVXg9ecffbZpZ63fPlyDRo0SG63OySId+zYUZKCLRGjR4/WddddJ8m/jdvzzz+vr776Sk8//bQ6d+6sJUuWaNy4cWrRooUkaefOnWrWrFnUXi8A1DRCMADUkHXr1mn9+vW69tpry70mNzdXOTk5GjNmTMj9jz76qJo0aaIbbrgh5P7t27crJSVFKSkpkqQ//elP+s9//qPly5fr+uuvD7ZDrF69WpL0wgsvqEWLFrr44ouDH+PAgQPKzs7W3r17NWHCBEn+YPz000/rhBNOkORfcBcI0pK/B9ntdlejGgBQuwjBAFADFixYoAULFuj++++v8LpPPvlE48aNK7WXb0FBgRwOR8hpbqZpqqioKGRWV/K3Xjz99NM65ZRTdNpppwXv3717t2bMmKFp06aFfOzTTjtNTzzxhC677DLNmzdPktSvXz8lJyerRYsWeuKJJ3TvvfdqypQpeuCBB/TOO++UGh8AxBr+LwYAUXTgwAHt2rVLX375pV555RWdfvrpKigo0EcffaSff/5ZSUlJIdf37t1bvXv3LvVx7rnnHrVo0UJDhgwp93P5fD7l5uaqYcOGuuOOO/Tee++pZcuWkvw9vU8//bSuvvpqnX766Tpw4IAcDoeSk5Ml+dsksrOzddlll0nyzzBblqW9e/fqscce08iRI3XKKacoJydHd911l1566SU1btw4UmUCgBpHCAaAKPJ4PLrooov04IMP6rjjjpMkJSQk6LXXXpPD4Qg7MxyQl5cnj8dT4TWbNm1Sr1695HK5gjO1n3/+uZKSktS5c+fgdXPmzJHP59Mll1yiZ599VpI/JNepU0effvqpJP9M8DfffKNRo0bpgQceCG6dNnnyZN1999363//+RwgGENPYJxgAUK79+/crNTW1tocBABFHCAYAAMBRh93OAQAAcNQhBAMAAOCoQwgGAADAUYcQDAAAgKMOIRgAAABHHUIwAAAAjjr/D4CnphmjEsaFAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 800x640 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "plt.figure(figsize=(10,8),dpi=80)\n",
    "sns. kdeplot( normal,shade=True,color=\"#01a2d9\",label=\"普通交易\",alpha=.5)\n",
    "sns. kdeplot( ab,shade=True,color=\"#dc2624\",label=\"异常交易\",alpha=.5)\n",
    "sns.set(style=\"whitegrid\" ,font=\"simhei\" , font_scale=1.1)\n",
    "plt.title(\"异常交易vs普通交易订单金额分布图\" ,fontsize=18)\n",
    "plt.ylim( (0,0.0000002))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a218eb2",
   "metadata": {},
   "source": [
    "大于4000000大多数是异常"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 227,
   "id": "5c7d3037",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import KBinsDiscretizer as KBD "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 235,
   "id": "06417f2c",
   "metadata": {},
   "outputs": [],
   "source": [
    "enc = KBD(n_bins=10,encode=\"ordinal\",strategy = \"kmeans\"#通过聚类来分\n",
    "         )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 236,
   "id": "811dfd82",
   "metadata": {},
   "outputs": [],
   "source": [
    "enc = enc.fit(pd.DataFrame(train[\"订单金额\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 237,
   "id": "bf96be65",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"金额分箱\"]=enc.transform(pd.DataFrame(train[\"订单金额\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 238,
   "id": "70746599",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "金额分箱\n",
       "0.0         0.5\n",
       "1.0       956.0\n",
       "2.0      2980.0\n",
       "3.0      6666.0\n",
       "4.0     13189.0\n",
       "5.0     25790.0\n",
       "6.0     71980.0\n",
       "7.0    155999.0\n",
       "8.0    383000.0\n",
       "9.0    766000.0\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 238,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"金额分箱\"])[\"订单金额\"].min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 239,
   "id": "cfa164f6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "金额分箱\n",
       "0.0       954.0\n",
       "1.0      2970.0\n",
       "2.0      6638.0\n",
       "3.0     12999.0\n",
       "4.0     23998.0\n",
       "5.0     45490.0\n",
       "6.0     99840.0\n",
       "7.0    155999.0\n",
       "8.0    383000.0\n",
       "9.0    766000.0\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 239,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"金额分箱\"])[\"订单金额\"].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 242,
   "id": "d4481222",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame(index=train.groupby([\"金额分箱\"])[\"订单金额\"].max() .index)\n",
    "df[\"下界\"]= train.groupby([\"金额分箱\"])[\"订单金额\"].min()\n",
    "df[\"上界\"]= train.groupby([\"金额分箱\"])[\"订单金额\" ].max()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 243,
   "id": "867f9fd4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>下界</th>\n",
       "      <th>上界</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>金额分箱</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0.0</th>\n",
       "      <td>0.5</td>\n",
       "      <td>954.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1.0</th>\n",
       "      <td>956.0</td>\n",
       "      <td>2970.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2.0</th>\n",
       "      <td>2980.0</td>\n",
       "      <td>6638.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3.0</th>\n",
       "      <td>6666.0</td>\n",
       "      <td>12999.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4.0</th>\n",
       "      <td>13189.0</td>\n",
       "      <td>23998.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5.0</th>\n",
       "      <td>25790.0</td>\n",
       "      <td>45490.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6.0</th>\n",
       "      <td>71980.0</td>\n",
       "      <td>99840.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7.0</th>\n",
       "      <td>155999.0</td>\n",
       "      <td>155999.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8.0</th>\n",
       "      <td>383000.0</td>\n",
       "      <td>383000.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9.0</th>\n",
       "      <td>766000.0</td>\n",
       "      <td>766000.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            下界        上界\n",
       "金额分箱                    \n",
       "0.0        0.5     954.0\n",
       "1.0      956.0    2970.0\n",
       "2.0     2980.0    6638.0\n",
       "3.0     6666.0   12999.0\n",
       "4.0    13189.0   23998.0\n",
       "5.0    25790.0   45490.0\n",
       "6.0    71980.0   99840.0\n",
       "7.0   155999.0  155999.0\n",
       "8.0   383000.0  383000.0\n",
       "9.0   766000.0  766000.0"
      ]
     },
     "execution_count": 243,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 253,
   "id": "51476b42",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "金额分箱\n",
       "0.0    0.203899\n",
       "1.0    0.246125\n",
       "2.0    0.326309\n",
       "3.0    0.264881\n",
       "4.0    0.336735\n",
       "5.0    0.200000\n",
       "6.0    0.000000\n",
       "7.0    1.000000\n",
       "8.0    0.000000\n",
       "9.0    1.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 253,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"金额分箱\"])[\"异常\" ].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 244,
   "id": "b0aff259",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "金额分箱\n",
       "0.0       136.243951\n",
       "1.0      1775.061962\n",
       "2.0      4165.485313\n",
       "3.0      9128.895833\n",
       "4.0     16872.602041\n",
       "5.0     32339.400000\n",
       "6.0     85476.666667\n",
       "7.0    155999.000000\n",
       "8.0    383000.000000\n",
       "9.0    766000.000000\n",
       "Name: 订单金额, dtype: float64"
      ]
     },
     "execution_count": 244,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"金额分箱\"])[\"订单金额\"].mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 245,
   "id": "41236fd1",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"金额分箱\"]=enc.transform(pd.DataFrame(train[\"订单金额\"]))\n",
    "test[\"金额分箱\"]=enc.transform(pd.DataFrame(test[\"订单金额\"]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 246,
   "id": "7b88f70a",
   "metadata": {},
   "outputs": [],
   "source": [
    "dic = dict(train.groupby([\"金额分箱\"])[\"订单金额\"].mean())\n",
    "train[\"分箱均值\"]= train[\"金额分箱\" ].map(dic)\n",
    "test[\"分箱均值\"]= test[\"金额分箱\"].map(dic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 254,
   "id": "d0aa6d7f",
   "metadata": {},
   "outputs": [],
   "source": [
    "dic = dict(train.groupby([\"金额分箱\"])[\"异常\"].mean())\n",
    "train[\"分箱异常\"]= train[\"金额分箱\" ].map(dic)\n",
    "test[\"分箱异常\"]= test[\"金额分箱\"].map(dic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 255,
   "id": "f78dca88",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌      订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4283851335       5       1  8002042497    三星  766000.0     200     1   \n",
       "1   1  4281111595       2       1  8002199518  纬度空间     100.0     100     1   \n",
       "2   0  4106833871       3       1  8002212182  品道天元    8800.0     100     1   \n",
       "3   0  4253622967      10       1  8001748897  清华同方     880.0     100     1   \n",
       "4   0  4276159555       3       0  1000341307  乐扣乐扣    4900.0     100     1   \n",
       "\n",
       "   支付方式  ...   支付方式异常率  省份     省份异常率  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱  \\\n",
       "0     0  ...  0.275173   0  0.206912   0.261565   0.294727  0.167849   9.0   \n",
       "1     0  ...  0.275173  11  0.222260   0.262840   0.294727  0.167849   0.0   \n",
       "2     0  ...  0.275173  11  0.222260   0.235079   0.294727  0.167849   3.0   \n",
       "3     0  ...  0.275173  14  0.212617   0.215029   0.294727  0.167849   0.0   \n",
       "4     0  ...  0.275173  28  0.236769   0.235079   0.178732  0.167849   2.0   \n",
       "\n",
       "            分箱均值  销量分箱      分箱异常  \n",
       "0  766000.000000     1  1.000000  \n",
       "1     136.243951     1  0.203899  \n",
       "2    9128.895833     1  0.264881  \n",
       "3     136.243951     1  0.203899  \n",
       "4    4165.485313     1  0.326309  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 255,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 248,
   "id": "89ae316e",
   "metadata": {},
   "outputs": [],
   "source": [
    "ab = train. loc[train[\"异常\"]==1,\"商品销售数量\"]\n",
    "normal = train.loc[train[\"异常\"]!=1,\"商品销售数量\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 250,
   "id": "7623abc4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0.5, 1.0, '异常交易vs普通交易商品销售数量分布图')"
      ]
     },
     "execution_count": 250,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAqsAAAIyCAYAAADscoN6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAAxOAAAMTgF/d4wjAABhU0lEQVR4nO3de5yM5f/H8ffs7IG1zqEccsixUsihEJUip6RIEolEUuggKsfWWaVQvpQOVCqHnEv9iFRytpuKSLFIyDrscXbm/v2x5razO7t2Z+7ZQ17Px+P7zc7cM/e118zuvPe6P9d12QzDMAQAAADkQ0F53QAAAAAgM4RVAAAA5FuEVQAAAORbhFUAAADkW4RVAAAA5FuEVQAAAORbhFXAD8nJyUq/+tvixYv17rvvetz277//+vT8p06d0tKlS/XXX3/53Mb8LikpSTNnztT58+cz3Ld//37NnTtXZ8+ezdFzOhwOnT9/Xg6Hw6pmSioYr8fJkyfzugk5kpKSkuFnKCs//vijEhMTPW779ttvtWHDBqublu/5u/Lk/v379fvvv1vUGiBwgvO6AUBumj9/viIjI3P0mPXr16t8+fIZbnc4HOrfv79q166tF154wbz9yy+/1KFDh9S3b1/ztieffFLh4eGaPXu2QkJCsn3u999/X3PmzFH37t01ZsyYHLU7OTlZhw8fztFjKlWqpNDQ0Bw9xl+HDx/WvHnztGPHDv3vf//z6J/FixfrvffeU61atdSiRQuvj3c6nXr77bcVGhqqxx9/XJK0adMmDRgw4JLnDgoK0owZM3TnnXdmq635/fX4+uuv9fTTT+foe0rr3Llz2f7D6sorr1RYWFim98fExGjo0KF6+umndeutt3o95sSJE2revLlGjhyphx9++JLnTEpK0qBBg1S8eHEtX75cERERkqQPPvhAv//+u7788kvztqxs2LBBlSpVUrVq1fT2229rxowZ2rZtm4KCgvTuu++qe/fuKlWqlMaNG6fY2FiNGzfuks8bHR2twYMHX/Lcab3xxhuqW7fuJY+LiorSvn37dM899yg0NFTJycl6/PHHVb16db388ss5Omda77zzjpYuXarp06erbdu22XqMy+XSwYMHfT6nJFWtWlVBQYyVIfsIq7isFCpUSJI0a9YsVa1aNctjP//8c7333nsqUaKE1/tDQkJ044036u2331at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MjIyQ73f008/rb/++stj7U4ptaazR48e2d7SNDw8XDfeeKO++uorSamXoi81Iut25ZVXauvWrZo9e7a+//57devWTS+88ILCw8N15MgRDRo0SFdeeaXHhCH3SJ63cOS+5L9s2TJt3LhRd999d4bvY/jw4dq5c6dWrVql0NBQXXvttRoxYoSWLFmi6OjoDGHVfXkxuxNIpOwvJn6pEavExET99ddfio6OzrI8I6389HrkhD9r57pDv79hderUqWrSpInHdro5LQNwTxjKzqYKUuql/cxWPjh58qSuvvpqbd68WY0bN1atWrV0/PhxNWjQwGPJrfLly+v222/X2rVrL7lF7l133aX27dtnGP13h9f//e9/5m2GYSgpKSnTtWzTmz59umw2m9elybIqA/Amu+d0T/7z9tp7e09FR0dryZIlevPNN1WtWjV16NAh22EcuBTCKi47LpdLY8aMUXh4eKb1ZZfizw4sl3qsy+XSN998ozfeeEMHDhxQt27dFB0drXHjxunbb79V7969zR2TMrNo0SK9/PLLatiwoT788EPzUnd0dLSeeOIJORwOvf/++x771x89ejTTlQ2Cg4PVvn17ffjhh5K8X15v1KiRli5dqr59+6p169YKDg7W6tWrJUlNmjTJcLy7/TkpA7hU8Pr555/VuXPnS34g//PPP7r//vvlcDguuZd7fnw9vElKStLmzZszLN+U3U0r1q1bpz/++MP8+tdffzUvbbv7ffPmzR7rDLvrY71xP2bu3LnasmWLEhISPMKqtzKAHTt2ZPp87uBZpkyZS47ES6k/Z5mNxJcpU0bTpk2TJP3000/mrlk7duxQ69at9dprr+mGG27QqlWrtH79eoWEhGju3Llq2rSpatSo4fU5b731Vo++Sc/bslruLWiz8s4772jjxo3q0qWLqlWrluH+Y8eOKTw8PMu1WNO6VID86KOPtHbtWkVHRyskJCTD8lfuHf7SGzNmjJ5//nl9/fXXWrx4sd58801J3v8YTUlJyfZVEkAirOIy88svv2jatGnavHmzRo4c6XWRefcuU1mNzl1qT++0Nm7cKKfTaW5BmH6nGil1MfZffvlFGzdu1Ndff63Dhw+rTp06mj9/vho1aiSHw6H//e9/eu+997Rx40aVK1dON998s2666SZVqVJF11xzjcel3i5duqhRo0bmrOHz58/r7bff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PmucO3fOaNy4cV43L0917tzZ+PXXXz1u27x5s1G/fn1j7969xtmzZ40OHToY+/fvz6MW5r3ffvvNuOuuuy7b98v+/fuNDh06GDVr1jRvy+o9MmPGDOPee+81zpw5Y/z6669G69atDYfDkVfNDxhv/TJv3jzj4YcfNmJiYoyYmBjj9ttvN3/vrlu3zhg4cGBeNTfXeOuXrH52Luf3S3oLFiwwnnnmGcMwLp/3S2afzwXldwwjq37asGGDypYtq86dOysoKEh9+/bNdJOD/7qQkBC9+eabql+/viIiItSqVSvFxMQoOjpa1113XV43L88kJSXp0KFDuuaaazxuX7Fihe69917VrFlTRYsW1f333681a9bkUSvz3rRp0zRkyJDL9v0yb948jR492uO2rN4jy5cvV//+/VWsWDHVrl1b1apV086dO/Oi6QHlrV+qVq2qadOmqUKFCqpQoYJuuukmHT58WJK0e/fuy2K3Q2/9ktXPzuX8fkkrLi5O77zzjp555hlJl8/7JbPP54LyO4aw6qdjx455vNErVaqkAwcO5GGL8k7t2rV1ww03mF+vX79eDRs21O7du7Vv3z41b95cTZo00dixY81LdpeDPXv2yOl0qk2bNmrUqJH69eun48ePZ3jvVKxY8bJ970RHRysmJkZt27a9bN8vkZGRatiwocdtWb1Hjh49muF3z/79+3OnsbnIW7/cdtttKleunCQpMTFRP/74o3lMVFSUFi1apCZNmuj222//z5aQeOuXrH52Luf3S1qffPKJbr31VlWoUEHS5fN+yezzuaD8jiGs+snlcqlYsWLm14ULF9aZM2fysEX5w7fffqvt27erT58+Klq0qAYPHqyNGzdqzZo12rVrlz799NO8bmKuSU5OVq9evbRixQp9//33Klu2rCZMmJDhvRMeHq6zZ8/mYUvzzrvvvqtHH31UNpvtsn2/2Gy2DLdl9R4xDEPFixc37ytcuPB/8v3jrV/SeuONN1S5cmW1aNFCknT11Vdr0qRJ+umnnzRr1iy9+uqr+v3333OjqbnKW79k9bPD+0VyOBxasGCBevfubd52ubxf0kr7+VxQfscQVv1UokQJjxcvISFBQUGXd7cePXpUI0aM0Pjx41WqVCn16NFDXbt2VVBQkEqVKqUuXbpo48aNed3MXHPzzTdr6NChKlKkiEJDQ9W7d29t3LhR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uEzccsstmjdvnurUqaP4+HglJiaqVKlS2r9/vypXrqyQkBC9++672rt3r6ZMmeLXuRISEtS0aVMlJiYqPDxc7du317hx4zR69Gjt3r1b1atXN4+Njo5WmzZt9MwzzygpKUkLFizQbbfdpnbt2qlEiRLmcfHx8QoKCvKopX3yySfVq1cvSdLff/+tZ599VuXLl1etWrV04MABxcTEqHHjxlq/fr2KFy+u9957T//++69atGih6Oho2Ww2HT9+XL169VJYWJiKFi3qUSKRntPp1JkzZ1SiRAl9+OGHfvURALgxsgoAksfkqsjISB09elTvvfeepkyZorNnz+rNN9/McFxSUlKG5wkNDTVHTNOy2WzmSGfhwoW1c+dOtWjRQvPnz1flypUlSSEhIWrXrp0ef/xx83GjRo0yA2JYWJj69u2rgwcPSpK+//57BQen/hofPny4ypUrp6FDh0qSuUqA2//93/+pRo0aGjlypObMmaPrrrtOgwcP1qJFi3T48GEdP35cUuqocvny5c1L+eXKldNXX32lo0eP6uOPP75kPz722GMeIRoA/EVYBYA0pk6dqp9++kmff/65bDabZs2apTFjxqh79+665557zONiY2PVpEmTDI9fu3at1q1bp0mTJnncHhERoe3bt0tKXRYrOjpacXFxmj9/vsLDw/XQQw/JZrPp3Xff9Vg94N9//1Xv3r09nstdB9uhQwfzthMnTig4OFhfffWVeYzD4dDAgQPVtWtXde3aVYZh6MCBA5ozZ47+7//+T6VKldI111yjvn376pNPPtGhQ4f0xx9/eIzspv1+P/vsM02fPl1S6kjukCFDNGfOHPOYRx99VD179sxONwNAthFWAeCCkydP6vDhw6pcubIeeugh8/a6detq0qRJioqKMm9zj5Lu3bvXvK1Zs2YqWrSoQkND1blzZzOwxsTEqEuXLuZxxYoVU4UKFWS321WuXDnzMZLUt2/fDCOr6RUpUkRdunTR888/7zHSm1ZycrLi4uJUrFgxSdLbb7+tjz/+WPHx8QoNDVXHjh0VHx+vWrVqaeHChfrrr7+0bt06HT9+XDfeeKPX54yLi9O0adMkyRw9dn/txuQqAFYjrALABVdccYXefPNNDRkyRG3btlXXrl21ZMkSrVy5Uo0aNfIIq5kt0WS3270GyLTH169fX/Xr19frr7+u1q1bq2zZsipcuLAkZWtkde/evfr222/17bffZvn9fPTRRypZsqSk1JUG+vfvrzZt2uiDDz5QlSpVNGDAALVo0UKS1LlzZ3MlBHfJQ1phYWG6/fbbzQljSUlJ+v3333XnnXeax5QpUybT8AwAviKsAsAleJuH6r4tfd1qcnKyDMOQ0+k070tfP5rW8uXLtWXLFs2fP19S9kZWQ0JCVLRoUX355ZdenzMlJUXXXXddhkC9ZcsWSdIrr7yiGjVqKCoqygymjRs3VmhoqOx2e4YVDCRp6dKliomJ0dGjRyWljqw6nU598803HufdtGmT7r333ky/XwDIKcIqAMhzPdTixYtrzpw5Zj3mDTfcICl1trt75NB9vPs+t8TERBmGoeXLl2v58uXm7aVKlfI4Li4uTqdPn9bixYvNwJg+FMfHx+uff/5R2bJlM21rTrRo0UIbNmzQp59+qgkTJqhKlSrq1q2bFi5cqDVr1uj06dNKTEzU6tWr1a5dO4/H9unTRwMGDFBERISk1B2+mjVrpiVLlpjHJCQksCkAAMsRVgFAksPhMP89duxYj/tSUlI0fPhw/fbbbxo+fLiki6OlaWtW77zzTiUnJys5OTlDzap7p6m0z9mkSRNNmDDBDKPpR2kHDhyoPXv26JFHHvG4/dy5czp06JDXCV5ppR3RTU5O1pYtW7RkyRLt27dPH374oW688UZt2LBBzz//vH799VfNnz9fhw4d0qBBgxQdHa1BgwapSJEiGjx4sA4fPuyxdqrL5VJISIi6d+/ucc6kpCRdf/31GjduXJZtA4DsYp1VAMiG06dPm/WfOWUYhhwOh8ci/dlx9uxZRUREZKgDdTgcSkpKMkc5s2P//v0aP368OnfurPbt25sjoFOnTlVwcLD69++v8PBwSdLOnTv19ddf67nnnqMGFUCeI6wCAAAg3+JPZgAAAORbhFUAAADkW4RVAAAA5FuEVQAAAORbhFUAAADkW4RVAAAA5Fv/D4jIT7HtLA8YAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 800x640 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8),dpi=80)\n",
    "sns. kdeplot( normal,shade=True,color=\"#01a2d9\",label=\"普通交易\",alpha=.5)\n",
    "sns. kdeplot(ab,shade=True,color=\"#dc2624\",label=\"异常交易\",alpha=.9)\n",
    "sns.set(style=\"whitegrid\" ,font=\"simhei\" , font_scale=1.1)\n",
    "plt.title(\"异常交易vs普通交易商品销售数量分布图\" ,fontsize=18)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 251,
   "id": "3d7fb085",
   "metadata": {},
   "outputs": [],
   "source": [
    "train[\"销量分箱\"]=0#二值化\n",
    "test[\"销量分箱\"]= 0\n",
    "train.loc[train[\"商品销售数量\"]>25,\"销量分箱\"]=1\n",
    "test. loc [test[\"商品销售数量\"]>25,\"销量分箱\"]=1"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "401ff29a",
   "metadata": {},
   "source": [
    "### 可以增加销量分享的异常率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 257,
   "id": "a61c5dc5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>支付方式异常率</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.275173</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 24 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌      订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4283851335       5       1  8002042497    三星  766000.0     200     1   \n",
       "1   1  4281111595       2       1  8002199518  纬度空间     100.0     100     1   \n",
       "2   0  4106833871       3       1  8002212182  品道天元    8800.0     100     1   \n",
       "3   0  4253622967      10       1  8001748897  清华同方     880.0     100     1   \n",
       "4   0  4276159555       3       0  1000341307  乐扣乐扣    4900.0     100     1   \n",
       "\n",
       "   支付方式  ...   支付方式异常率  省份     省份异常率  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱  \\\n",
       "0     0  ...  0.275173   0  0.206912   0.261565   0.294727  0.167849   9.0   \n",
       "1     0  ...  0.275173  11  0.222260   0.262840   0.294727  0.167849   0.0   \n",
       "2     0  ...  0.275173  11  0.222260   0.235079   0.294727  0.167849   3.0   \n",
       "3     0  ...  0.275173  14  0.212617   0.215029   0.294727  0.167849   0.0   \n",
       "4     0  ...  0.275173  28  0.236769   0.235079   0.178732  0.167849   2.0   \n",
       "\n",
       "            分箱均值  销量分箱      分箱异常  \n",
       "0  766000.000000     1  1.000000  \n",
       "1     136.243951     1  0.203899  \n",
       "2    9128.895833     1  0.264881  \n",
       "3     136.243951     1  0.203899  \n",
       "4    4165.485313     1  0.326309  \n",
       "\n",
       "[5 rows x 24 columns]"
      ]
     },
     "execution_count": 257,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 256,
   "id": "cf38804b",
   "metadata": {},
   "outputs": [],
   "source": [
    "train.to_csv(r'train.csv')\n",
    "test.to_csv(r'test.csv')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed11aef0",
   "metadata": {},
   "source": [
    "# 用户ID 商品ID 品牌"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "eecc0498",
   "metadata": {},
   "source": [
    "### 数量特别多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 260,
   "id": "41135838",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "58488"
      ]
     },
     "execution_count": 260,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train[\"下单用户ID\"].unique())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 261,
   "id": "42af800e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "44137"
      ]
     },
     "execution_count": 261,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(train[\"下单用户ID\"].value_counts()==1).sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 294,
   "id": "945acdc0",
   "metadata": {},
   "outputs": [],
   "source": [
    "#ID的异常率\n",
    "MultipleBuyRatio = train.groupby([\"下单用户ID\"])[\"异常\"].mean()[train[\"下单用户ID\"].value_counts() >1].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 295,
   "id": "0b7db262",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "下单用户ID\n",
       "lhm-clq_dk    0.0\n",
       "mycabin       0.0\n",
       "myj771013     0.0\n",
       "myjwinkgm     0.0\n",
       "myke2006      0.0\n",
       "             ... \n",
       "comoc1980     1.0\n",
       "xuyaobin      1.0\n",
       "xuxu139       1.0\n",
       "lilacflori    1.0\n",
       "liang_6804    1.0\n",
       "Name: 异常, Length: 14351, dtype: float64"
      ]
     },
     "execution_count": 295,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MultipleBuyRatio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 264,
   "id": "dddecd9a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    14351.000000\n",
       "mean         0.258921\n",
       "std          0.347363\n",
       "min          0.000000\n",
       "25%          0.000000\n",
       "50%          0.000000\n",
       "75%          0.500000\n",
       "max          1.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 264,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MultipleBuyRatio.describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 265,
   "id": "200d8470",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    14351.000000\n",
       "mean         0.258921\n",
       "std          0.347363\n",
       "min          0.000000\n",
       "50%          0.000000\n",
       "60%          0.250000\n",
       "70%          0.500000\n",
       "80%          0.500000\n",
       "90%          1.000000\n",
       "99%          1.000000\n",
       "max          1.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 265,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "MultipleBuyRatio.describe([0.6,0.7,0.8,0.9,0.99])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 266,
   "id": "25ada049",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    17252.000000\n",
       "mean         6.321528\n",
       "std         37.765090\n",
       "min          1.000000\n",
       "25%          1.000000\n",
       "50%          1.000000\n",
       "75%          3.000000\n",
       "max       2606.000000\n",
       "Name: 商品销售数量, dtype: float64"
      ]
     },
     "execution_count": 266,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"商品ID\"])[\"商品销售数量\"].sum( ).describe( )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 273,
   "id": "8eee449e",
   "metadata": {},
   "outputs": [],
   "source": [
    "#大于等于10的进行计算异常率\n",
    "ProductIDRatio = train.groupby([\"商品ID\"])[\"异常\"].mean()[train.groupby([\"商品ID\"])[\"商品销售数量\"].sum( ) >=10].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 274,
   "id": "b40fd117",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    1748.000000\n",
       "mean        0.229465\n",
       "std         0.208118\n",
       "min         0.000000\n",
       "25%         0.083333\n",
       "50%         0.176471\n",
       "75%         0.324169\n",
       "max         1.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 274,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ProductIDRatio.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6cc5ff7",
   "metadata": {},
   "source": [
    "### 品牌"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 275,
   "id": "34af2afe",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    2507.000000\n",
       "mean       43.501795\n",
       "std       197.462143\n",
       "min         1.000000\n",
       "25%         2.000000\n",
       "50%         5.000000\n",
       "75%        18.000000\n",
       "max      3904.000000\n",
       "Name: 商品销售数量, dtype: float64"
      ]
     },
     "execution_count": 275,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.groupby([\"品牌\"])[\"商品销售数量\"].sum( ).describe( )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 276,
   "id": "816c5a60",
   "metadata": {},
   "outputs": [],
   "source": [
    "#大于等于10的进行计算异常率\n",
    "BrandIDRatio = train.groupby([\"品牌\"])[\"异常\"].mean()[train.groupby([\"品牌\"])[\"商品销售数量\"].sum( ) >=10].sort_values()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 277,
   "id": "1eb7c330",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    882.000000\n",
       "mean       0.246267\n",
       "std        0.167831\n",
       "min        0.000000\n",
       "25%        0.133333\n",
       "50%        0.217391\n",
       "75%        0.333333\n",
       "max        1.000000\n",
       "Name: 异常, dtype: float64"
      ]
     },
     "execution_count": 277,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "BrandIDRatio.describe()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "75f7176f",
   "metadata": {},
   "source": [
    "交易量不足设为-1 没有出现在测试机的设-1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 278,
   "id": "80251353",
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.DataFrame( index=train[\"下单用户ID\"].unique())\n",
    "df[\"用户异常率\"]= -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 279,
   "id": "6b2d0a2c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>dakehu_zy</th>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>nonscorpio</th>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qq-edf69d7</th>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>benson2570</th>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qq-3be293b</th>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "            用户异常率\n",
       "dakehu_zy      -1\n",
       "nonscorpio     -1\n",
       "qq-edf69d7     -1\n",
       "benson2570     -1\n",
       "qq-3be293b     -1"
      ]
     },
     "execution_count": 279,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 297,
   "id": "a7d1cc5c",
   "metadata": {},
   "outputs": [],
   "source": [
    "df.loc[MultipleBuyRatio.index,'用户异常率']=MultipleBuyRatio"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 298,
   "id": "b07690db",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>用户异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>dakehu_zy</th>\n",
       "      <td>0.133333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>nonscorpio</th>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qq-edf69d7</th>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>benson2570</th>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>qq-3be293b</th>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "               用户异常率\n",
       "dakehu_zy   0.133333\n",
       "nonscorpio  0.333333\n",
       "qq-edf69d7  0.000000\n",
       "benson2570 -1.000000\n",
       "qq-3be293b -1.000000"
      ]
     },
     "execution_count": 298,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 299,
   "id": "6f6038ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'dakehu_zy': 0.13333333333333333,\n",
       " 'nonscorpio': 0.3333333333333333,\n",
       " 'qq-edf69d7': 0.0,\n",
       " 'benson2570': -1.0,\n",
       " 'qq-3be293b': -1.0,\n",
       " 'saabnan': 0.25,\n",
       " 'tmall-4497': 0.0,\n",
       " 'gailiju_cx': -1.0,\n",
       " 'dsjalfdsaj': 0.0,\n",
       " '499091968_': 0.0,\n",
       " 'qq-5dc6b31': 1.0,\n",
       " 'xdlkliukai': -1.0,\n",
       " 'fsdaggfdsg': -1.0,\n",
       " 'cwergdsg': -1.0,\n",
       " 'twodaya': -1.0,\n",
       " 'tmall-3604': -1.0,\n",
       " 'tmall-7432': -1.0,\n",
       " '415103410_': -1.0,\n",
       " 'chwan1': -1.0,\n",
       " 'yymmxxyy': 1.0,\n",
       " 'lws0898': -1.0,\n",
       " '1533857591': 0.0,\n",
       " 'you123you1': 0.6666666666666666,\n",
       " 'lidongli01': 0.6,\n",
       " 'ernino_dil': 1.0,\n",
       " 'tmall-1097': -1.0,\n",
       " 'wjxjx': 0.0,\n",
       " '1304654666': 0.0,\n",
       " '1354918398': 0.07692307692307693,\n",
       " 'tengguangy': 1.0,\n",
       " 'qq-03df0f8': 0.0,\n",
       " 'sandyliang': 0.5,\n",
       " 'kongbu01': 1.0,\n",
       " 'kongbu02': 1.0,\n",
       " 'kongbu03': 1.0,\n",
       " 'dogbaby': 1.0,\n",
       " 'wodeaibaob': 0.5,\n",
       " 'lhx001': 0.8888888888888888,\n",
       " 'zybxgzzy': 1.0,\n",
       " 'regae1': -1.0,\n",
       " 'dajiaogege': 0.6153846153846154,\n",
       " 'somnus1991': 1.0,\n",
       " 'gomecone': 0.5,\n",
       " 'zzluoxiang': 1.0,\n",
       " '1370184871': 0.25,\n",
       " 'kongbu00': 1.0,\n",
       " '1861385258': 0.6666666666666666,\n",
       " 'rpk1391168': 0.3076923076923077,\n",
       " '1576850346': 1.0,\n",
       " 'gzx122283': 0.0,\n",
       " 'dadibeige5': 0.0,\n",
       " 'netease-87': 0.045454545454545456,\n",
       " 'alipay-208': 0.22398131326239293,\n",
       " 'icefire198': 0.0,\n",
       " 'hwzyd': 0.0,\n",
       " 'lipeipei44': 0.0,\n",
       " 'orange_xxx': 0.0,\n",
       " 'wl14416159': 0.6666666666666666,\n",
       " '461048713_': 0.5,\n",
       " 'qq-9a5f50c': -1.0,\n",
       " '1895175676': -1.0,\n",
       " '1595032827': -1.0,\n",
       " 'jswinsh': 0.0,\n",
       " 'fengkuangx': 0.0,\n",
       " 'meili002': 0.6,\n",
       " 'liuwenhui9': 0.0,\n",
       " '1345867294': -1.0,\n",
       " 'xihuan1': 0.0,\n",
       " '421436536h': 0.0,\n",
       " 'cccvrvv': 0.0,\n",
       " 'puchicken': 0.6666666666666666,\n",
       " 'qq-846f7c9': 0.0,\n",
       " 'q3331763': 0.0,\n",
       " 'feng551807': 0.0,\n",
       " 'qq-31ce314': 0.0,\n",
       " '1867718638': 0.0,\n",
       " 'xyxxy72081': 0.0,\n",
       " '328175692_': 0.3333333333333333,\n",
       " 'newchina@c': 0.0,\n",
       " 'sina-11309': 0.0,\n",
       " 'qq-679b885': -1.0,\n",
       " 'yangqun051': -1.0,\n",
       " 'viavian952': 0.0,\n",
       " 'feifoo': 0.0,\n",
       " 'xrhu07': -1.0,\n",
       " 'enaheng': -1.0,\n",
       " 'hhhhxm88': -1.0,\n",
       " 'qq-dddc17c': -1.0,\n",
       " 'qq-c9ee9da': 1.0,\n",
       " 'liujia0716': 0.9090909090909091,\n",
       " 'qq-6b5e6a9': 0.6,\n",
       " 'linglong77': -1.0,\n",
       " 'feitian110': -1.0,\n",
       " 'qq-b2a8744': 0.5,\n",
       " 'wen7810': 0.0,\n",
       " 'zxing1230': -1.0,\n",
       " 'qhdplink': -1.0,\n",
       " 't139224758': -1.0,\n",
       " 'qq-2664eed': -1.0,\n",
       " 'gm34530541': -1.0,\n",
       " 'xwhzyj-001': -1.0,\n",
       " 'xiaoyu1987': 0.0,\n",
       " 'yueyue_912': 0.0,\n",
       " 'qq-f13ecaf': 0.0,\n",
       " 'qq-849dcee': 0.3333333333333333,\n",
       " 'gm_wyvei': 0.5,\n",
       " 'j150531445': -1.0,\n",
       " 'goldeneyes': 0.16666666666666666,\n",
       " 'fetyse': -1.0,\n",
       " 'zhangyz197': 0.0,\n",
       " 'qq-7c11606': 0.0,\n",
       " 'aplipay-20': 0.2113127001067236,\n",
       " 'qq-0c6e29a': 0.2,\n",
       " 'cskkxlj@co': 0.0,\n",
       " 'qq-55c7129': 0.0,\n",
       " 'cgzx_cyf': -1.0,\n",
       " 'lxy1392033': 0.0,\n",
       " 'zjw366': 0.6666666666666666,\n",
       " '1352733218': -1.0,\n",
       " 'smwei': 0.0,\n",
       " 'cnzjwszz': 0.0,\n",
       " 'a70672284': -1.0,\n",
       " 'qq-bfd01d9': 0.0,\n",
       " 'qq-aab2a17': 0.0,\n",
       " 'qq-de8e5e9': 0.0,\n",
       " '1530480378': 0.0,\n",
       " 'qq-456f9b3': -1.0,\n",
       " 'sdliyang19': 1.0,\n",
       " 'qq-d026eac': 0.75,\n",
       " 'qq-3ad0586': 0.5,\n",
       " 'djx8866': 0.3333333333333333,\n",
       " 'lwd-49': 0.0,\n",
       " 'angel77088': 0.0,\n",
       " 'wang_leee': 0.0,\n",
       " 'tmall-1668': 0.0,\n",
       " '1356168922': -1.0,\n",
       " '1390223480': -1.0,\n",
       " 'yunlong082': 0.0,\n",
       " 'ciyaxxx': -1.0,\n",
       " 'zhangy1121': -1.0,\n",
       " 'qq-411e17e': -1.0,\n",
       " 'qq-728c7a3': 0.0,\n",
       " 'qq-234a72a': 0.0,\n",
       " '1557108366': -1.0,\n",
       " 'qq-c718374': 0.5,\n",
       " 'fyg198463': -1.0,\n",
       " 'zhangdongj': 0.0,\n",
       " 'qq-45a73db': -1.0,\n",
       " 'liumingchu': 0.0,\n",
       " 'jinguan200': 0.0,\n",
       " 'qq-d655560': 0.0,\n",
       " 'jiaoyou11': 0.0,\n",
       " 'znlihuiyin': -1.0,\n",
       " 'gome_dzywb': 0.0,\n",
       " 'cscty001': 0.6666666666666666,\n",
       " 'jjzxlinfen': 0.0,\n",
       " '1391033212': 0.0,\n",
       " 'qq-a909658': -1.0,\n",
       " 'weij1206': 0.0,\n",
       " '1898845979': 0.5,\n",
       " 'qq-ce5e382': 0.5,\n",
       " 'qq-e458f19': 0.2,\n",
       " '1052579057': -1.0,\n",
       " 'zperfectj': 0.5,\n",
       " 'sun3f000': -1.0,\n",
       " 'dhjt0000': 0.2,\n",
       " 'justy4u': 0.6666666666666666,\n",
       " 'reaem_753': 0.6666666666666666,\n",
       " '1822328265': 0.16666666666666666,\n",
       " 'qq-e950ed4': -1.0,\n",
       " 'didi168168': -1.0,\n",
       " 'ccstar001': 1.0,\n",
       " 'lazy11': 1.0,\n",
       " 'xzrxlz123': -1.0,\n",
       " 'shuijing20': 0.7647058823529411,\n",
       " 's0603341': 0.5,\n",
       " 'loveee003': 0.6,\n",
       " 'qq-77cf110': 0.3333333333333333,\n",
       " 'wlm1314521': -1.0,\n",
       " 'yzbkkk': 0.5,\n",
       " 'itolkhtdmm': 0.02702702702702703,\n",
       " 'xingruidef': 1.0,\n",
       " '68879357_n': -1.0,\n",
       " '1864595584': -1.0,\n",
       " 'maojia3520': 0.4,\n",
       " 'qq-5e2f0a1': -1.0,\n",
       " 'qihoo-3059': -1.0,\n",
       " 'hongkong77': -1.0,\n",
       " 'rklhp_184': -1.0,\n",
       " 'zhuwenying': -1.0,\n",
       " 'huawert': -1.0,\n",
       " 'eli1111': 0.0,\n",
       " '001187yyy': -1.0,\n",
       " 'lly971045': -1.0,\n",
       " '1330513246': 0.0,\n",
       " 'wjssg123': 0.0,\n",
       " 'ggdggdgg': -1.0,\n",
       " 'ericbryan': 0.5714285714285714,\n",
       " 'qq-8f83e3c': -1.0,\n",
       " 'mfdhc': 0.0,\n",
       " '954173655_': -1.0,\n",
       " 'jation33': -1.0,\n",
       " 'qq-80e594b': -1.0,\n",
       " 'renren-244': 0.0,\n",
       " 'du_juan618': -1.0,\n",
       " 'kevin_jgs': -1.0,\n",
       " 'gome2101': 0.16666666666666666,\n",
       " 'zhaojun378': -1.0,\n",
       " 'songlh': -1.0,\n",
       " 'lzjosn': 0.25,\n",
       " '1815421760': -1.0,\n",
       " '8163zhuhui': -1.0,\n",
       " '1817085715': 0.0,\n",
       " 'luchsheng': 0.0,\n",
       " 'zhangxi668': 0.0,\n",
       " 'tmall-3587': -1.0,\n",
       " 'roywhite': 0.0,\n",
       " 'qq-23a0f0b': -1.0,\n",
       " '2897234058': 0.0,\n",
       " 'yuxiang945': 0.0,\n",
       " 'wangjuan26': 0.0,\n",
       " 'yeshujin': 0.25,\n",
       " 'jing1681_s': -1.0,\n",
       " '1198331339': -1.0,\n",
       " '1371592485': -1.0,\n",
       " '857394579_': 0.5,\n",
       " 'only_by_se': 0.0,\n",
       " 'gumingbo3': 0.0,\n",
       " 'cpa5076_ee': 0.0,\n",
       " 'zhuangyi00': 1.0,\n",
       " 'qq-8ec53fa': 1.0,\n",
       " 'qq-5645bc5': -1.0,\n",
       " 'ganggege1': 0.75,\n",
       " 'julietse20': -1.0,\n",
       " 'qq-aa7667f': 0.0,\n",
       " 'qiuwz94': -1.0,\n",
       " 'wangyao197': 0.0,\n",
       " 'huguan1087': 0.0,\n",
       " '1392948899': -1.0,\n",
       " 'linpanpan2': 0.25,\n",
       " 'wangchunli': 0.0,\n",
       " 'qq-b209d3c': 0.0,\n",
       " 'mingkai071': 0.0,\n",
       " 'chenlu1992': 1.0,\n",
       " 'foreverkid': -1.0,\n",
       " 'zhangyannu': 0.6666666666666666,\n",
       " 'qq-875beab': 0.5,\n",
       " 'qq-a4c38db': -1.0,\n",
       " 'trtits': 0.625,\n",
       " 'djhzyhdqx': 0.1,\n",
       " 'shaorenze': 0.5714285714285714,\n",
       " 'yinziyu198': 0.8888888888888888,\n",
       " 'likajihua_': 1.0,\n",
       " 'lvenlee': 0.0,\n",
       " 'qq-7cfa619': 0.0,\n",
       " 'lingerone': 0.0,\n",
       " 'qq-d4e32fa': 0.0,\n",
       " 'heweijie': 0.0,\n",
       " 'hjsr1108': 0.0,\n",
       " '8218233gm': -1.0,\n",
       " 'qq-2580755': 0.0,\n",
       " 'qq-b4f360f': 0.0,\n",
       " 'afish1984': 0.0,\n",
       " 'lysqq1220': 0.0,\n",
       " 'jerve007': 0.0,\n",
       " 'sarielyui': 0.0,\n",
       " 'shanghg': 0.0,\n",
       " 'lvcdhc': 0.0,\n",
       " 'sampson668': 0.0,\n",
       " 'fuqin559': 0.0,\n",
       " 'hjzczy': 0.0,\n",
       " 'xiaonan012': 0.0,\n",
       " 'axwx521': -1.0,\n",
       " '1782297716': -1.0,\n",
       " 'theodore16': 0.0,\n",
       " 'liulaosan8': 0.0,\n",
       " 'qq-2092728': 0.0,\n",
       " 'chenjihua@': 0.0,\n",
       " 'szwgsd': -1.0,\n",
       " 'mazhaozhao': 0.0,\n",
       " '1391175273': 0.0,\n",
       " 'xiahuilin9': 0.0,\n",
       " '1820135400': 0.0,\n",
       " 'dingliping': 0.0,\n",
       " 'huohonglia': 0.0,\n",
       " 'jiangzizho': 0.4,\n",
       " 'yanmingqi9': 0.0,\n",
       " 'yangwenge9': 0.0,\n",
       " '1368331971': 0.0,\n",
       " '1381037128': 0.0,\n",
       " '49135_jb': -1.0,\n",
       " 'bbgouwu1_x': 0.3333333333333333,\n",
       " 'xingfuaxin': 0.0,\n",
       " 'mazl_001': -1.0,\n",
       " '1150287095': 0.0,\n",
       " 'srksrk': 0.0,\n",
       " 'asdqwe1901': 0.0,\n",
       " 'humaomao10': 0.0,\n",
       " 'xueyiren98': 0.0,\n",
       " 'qq-1c3bbe6': -1.0,\n",
       " 'hedeyun': 0.0,\n",
       " 'gomegyurta': 0.0,\n",
       " '1861155042': 0.16666666666666666,\n",
       " 'renaihong2': 0.0,\n",
       " 'renaihong5': 0.3333333333333333,\n",
       " 'winniepooh': 0.0,\n",
       " 'renaihong3': 0.25,\n",
       " 'skylinet': 0.0,\n",
       " 'qq-0deb524': 0.0,\n",
       " 'hxl_hm_wnx': 0.0,\n",
       " '1861259766': 0.0,\n",
       " 'waterbeast': 0.0,\n",
       " 'henrymyf': 0.0,\n",
       " 'delee1': 0.0,\n",
       " 'caltex': 0.0,\n",
       " 'lshx23': 0.0,\n",
       " '81531171_e': 0.0,\n",
       " 'qq-3446a48': 0.0,\n",
       " 'luminghood': 0.5714285714285714,\n",
       " '1339090077': 0.16666666666666666,\n",
       " 'h186880260': -1.0,\n",
       " 'yylxy2009': -1.0,\n",
       " 'yang2311': -1.0,\n",
       " 'tb0525': -1.0,\n",
       " '1357386337': -1.0,\n",
       " 'qq-b6562c2': 0.0,\n",
       " 'linhu0308': -1.0,\n",
       " '982663802_': -1.0,\n",
       " 'zhjc503': -1.0,\n",
       " 'y_haier': -1.0,\n",
       " 'jiguanlin1': 0.0,\n",
       " 'qq-e707680': -1.0,\n",
       " 'qq-7131973': 0.0,\n",
       " 'hclm12': 0.2,\n",
       " 'qq-d712994': 0.0,\n",
       " 'czl022': 0.0,\n",
       " '56655556_a': -1.0,\n",
       " 'qiluolianx': 0.0,\n",
       " 'zyl9845': -1.0,\n",
       " 'wangyixuan': 0.0,\n",
       " 'hfue7r748': 0.0,\n",
       " 'robertspig': 0.0,\n",
       " '724485771_': 0.5,\n",
       " '297277817_': 0.0,\n",
       " 'tmall-4346': 0.0,\n",
       " 'jd5678': 0.0,\n",
       " 'hqm-001396': 0.0,\n",
       " 'yang198209': -1.0,\n",
       " 'tf_xiaobai': 0.0,\n",
       " 'yczm111': -1.0,\n",
       " 'isdnboy': 0.0,\n",
       " 'qq-eb0f51d': 0.0,\n",
       " 'qq-431acf1': 0.0,\n",
       " 'jasonjiang': 0.0,\n",
       " 'wangkeling': -1.0,\n",
       " 'yayamama': -1.0,\n",
       " '受灾心理': 0.5,\n",
       " 'yanzfcu': 0.5555555555555556,\n",
       " 'duoduo_200': 0.3333333333333333,\n",
       " 'xuedong805': -1.0,\n",
       " 'qq-01262e5': -1.0,\n",
       " 'bftet_737': 0.5,\n",
       " 'fung012549': -1.0,\n",
       " 'gusulpy': 0.5,\n",
       " 'qq-fa365fc': 1.0,\n",
       " 'hefei229': 0.3333333333333333,\n",
       " 'sgzzdjb': 0.56,\n",
       " 'fafa966': 0.5,\n",
       " 'tsj822': 0.5,\n",
       " 'yangzhaohu': -1.0,\n",
       " 'hgz12348': 0.5,\n",
       " 'qq-0f74a80': 1.0,\n",
       " 'xicimm': 1.0,\n",
       " 'gm80706995': 0.8,\n",
       " 'chaolee371': 0.3333333333333333,\n",
       " 'zhongmin19': 0.5,\n",
       " 'wqgggxk775': -1.0,\n",
       " 'pei6025100': -1.0,\n",
       " 'zhuying999': 0.0,\n",
       " 'hsyj8138': -1.0,\n",
       " 'run4101241': 0.0,\n",
       " 'paopao2013': -1.0,\n",
       " 'xueqingden': -1.0,\n",
       " '001181yyy': -1.0,\n",
       " 'chongbin78': 0.0,\n",
       " 'xcct2002': -1.0,\n",
       " 'zihowe': -1.0,\n",
       " 'yu13816384': -1.0,\n",
       " 'ontxj_331': 0.0,\n",
       " 'adjsywas': -1.0,\n",
       " 'netease-88': 0.3,\n",
       " 'xiwoo78': 0.0,\n",
       " 'fjq5206': 0.0,\n",
       " 'masfv_234': -1.0,\n",
       " 'happiercxy': 0.3333333333333333,\n",
       " '1518834916': 0.0,\n",
       " 'nkkfq_722': 0.0,\n",
       " '290726516_': 0.0,\n",
       " '1881976197': 0.0,\n",
       " 'blueinspur': 0.0,\n",
       " 'lxsspc': 0.0,\n",
       " 'ztz999': 0.0,\n",
       " 'wangruieps': -1.0,\n",
       " 'eccygw': 0.0,\n",
       " 'cglyl135': 0.0,\n",
       " 'fan_fei205': 0.0,\n",
       " 'cynicalmk': -1.0,\n",
       " 'netease-61': 0.2857142857142857,\n",
       " '1358053945': -1.0,\n",
       " 'changh74': 0.0,\n",
       " 'xuedong_80': -1.0,\n",
       " 'wafy890320': -1.0,\n",
       " 'qq-6216112': -1.0,\n",
       " 'qtjglj1': 0.0,\n",
       " '656999zhj': -1.0,\n",
       " 'kangjianne': 0.0,\n",
       " '1359294598': -1.0,\n",
       " '宝石草1': -1.0,\n",
       " 'sysiigc': 0.125,\n",
       " '1389831280': 0.0,\n",
       " 'gdxhemsl': -1.0,\n",
       " 'qq-fb107d5': 0.0,\n",
       " 'lzhenye_wd': 0.0,\n",
       " 'qq-e228e24': -1.0,\n",
       " '1381766038': 0.0,\n",
       " 'yxm1128_hq': -1.0,\n",
       " 'hgz12347': -1.0,\n",
       " '287555117_': 0.0,\n",
       " 'xdd897_arm': 0.0,\n",
       " 'weka775': 0.0,\n",
       " 'daxidi': 0.5,\n",
       " 'aswxxx': -1.0,\n",
       " '1823258098': 0.2222222222222222,\n",
       " 'y58585888_': -1.0,\n",
       " 'wul1998': 0.0,\n",
       " 'liuming112': -1.0,\n",
       " '469518322_': 0.3333333333333333,\n",
       " 'qq-90881ad': 0.0,\n",
       " 'thedawn': -1.0,\n",
       " 'leonying1': 0.0,\n",
       " '7yangzhou7': -1.0,\n",
       " '1863968705': 0.2,\n",
       " 'heidernljb': 0.0,\n",
       " 'qq-834f041': 0.0,\n",
       " 'dengmengxi': 0.0,\n",
       " 'nierxiang1': 0.0,\n",
       " 'faleng': 0.3333333333333333,\n",
       " '1350209652': -1.0,\n",
       " 'qq-0827552': 0.0,\n",
       " 'lcsq666666': 0.0,\n",
       " 'mnbvc5555': -1.0,\n",
       " 'gome_mtwfy': 0.0,\n",
       " 'hermen_d': -1.0,\n",
       " '180279999_': -1.0,\n",
       " '1305727519': 0.0,\n",
       " 'lsj2008bj': 0.7777777777777778,\n",
       " 'asxt22': 1.0,\n",
       " 'w2210635': -1.0,\n",
       " '1382057165': 1.0,\n",
       " 'maggicesky': 1.0,\n",
       " 'hawarkju': 1.0,\n",
       " 'qq-3a603dd': -1.0,\n",
       " 'qq-df2fc4f': -1.0,\n",
       " 'qq-600098f': 0.5,\n",
       " 'fangjn2012': 0.5,\n",
       " 'javatiger': 0.6,\n",
       " 'caohanxue': 0.5,\n",
       " 'hezesong86': -1.0,\n",
       " 'dmwd2012': -1.0,\n",
       " 'everwy84': 1.0,\n",
       " 'qq84650370': -1.0,\n",
       " 'tyty1023': 1.0,\n",
       " 'yileijipin': -1.0,\n",
       " 'miaoshanqu': -1.0,\n",
       " 'shengheibe': -1.0,\n",
       " 'tanjijia': -1.0,\n",
       " 'zangfantan': -1.0,\n",
       " 'ydh12354': 1.0,\n",
       " '1392857212': 1.0,\n",
       " 'q56307210': -1.0,\n",
       " 'haiyu85000': 1.0,\n",
       " 'wdgsbb': -1.0,\n",
       " '1504009565': 0.5,\n",
       " '1360112148': 0.5555555555555556,\n",
       " '1899602567': 1.0,\n",
       " '1862259233': 1.0,\n",
       " 'lizhichen1': -1.0,\n",
       " 'wzp7153': 0.6428571428571429,\n",
       " '020sky': 0.8333333333333334,\n",
       " 'yyituoship': 1.0,\n",
       " 'qq-e007d93': 0.7142857142857143,\n",
       " 'lh13464709': 0.4,\n",
       " 'ningyang02': 0.3333333333333333,\n",
       " 'kou_san': 0.5,\n",
       " 'gome_hmsfn': 0.8333333333333334,\n",
       " 'johnsher': -1.0,\n",
       " 'syunsy': 0.0,\n",
       " '1390955355': 0.5,\n",
       " 'zhwbgm-201': 0.0,\n",
       " 'qq-9d7e205': -1.0,\n",
       " 'loirre': 0.0,\n",
       " 'onesir': -1.0,\n",
       " 'lpfufu': 0.0,\n",
       " 'laohuanniu': 0.14285714285714285,\n",
       " 'g159233350': -1.0,\n",
       " 'yh592800': 0.0,\n",
       " 'qq-cc77138': -1.0,\n",
       " 'xujinbang1': -1.0,\n",
       " 'luoyuanqiu': 0.0,\n",
       " 'zhaoyp3126': 0.0,\n",
       " 'saracs': -1.0,\n",
       " 'jinxi1022': -1.0,\n",
       " 'siqusihao': -1.0,\n",
       " 'yuanwenpin': -1.0,\n",
       " 'yspandysp_': 0.0,\n",
       " '1375275610': -1.0,\n",
       " '52dsa_tva': -1.0,\n",
       " '1373316629': 0.0,\n",
       " 'liujin999': 0.0,\n",
       " 'xingru2982': -1.0,\n",
       " 'shaoguoqia': -1.0,\n",
       " 'qq-ed0eaf5': -1.0,\n",
       " 'kenrong@co': -1.0,\n",
       " 'studoraemo': 0.0,\n",
       " 'qq-fee466a': -1.0,\n",
       " 'westsh': 0.0,\n",
       " '1801731373': -1.0,\n",
       " 'tiny777_kb': 0.0,\n",
       " '1395070267': 0.5,\n",
       " 'qq-ef29a1a': 0.0,\n",
       " 'btrees': 0.0,\n",
       " 'mcg0705': 0.0,\n",
       " 'liaokai01@': 0.0,\n",
       " 'guitarso': -1.0,\n",
       " 'tmall-9230': 0.0,\n",
       " 'tmall-1096': -1.0,\n",
       " 'q152709266': 0.5,\n",
       " '001185yyy': -1.0,\n",
       " 'cjp472': -1.0,\n",
       " 'zggz11': -1.0,\n",
       " '001186yyy': -1.0,\n",
       " 'hushsky': 0.0,\n",
       " 'carolmingp': 0.0,\n",
       " 'qyz001893': -1.0,\n",
       " 'daiyanqion': -1.0,\n",
       " 'abc_027': -1.0,\n",
       " 'mgwhy884': -1.0,\n",
       " 'gome_nttcb': 0.0,\n",
       " 'ch1390187': 0.0,\n",
       " 'xueying950': -1.0,\n",
       " 'sailto2008': -1.0,\n",
       " 'pkuchina': 0.0,\n",
       " '1385884225': 0.0,\n",
       " '1583535849': 0.0,\n",
       " 'autumns_am': -1.0,\n",
       " 'qq-bad9b6b': 0.0,\n",
       " 'heweiruo97': 0.0,\n",
       " '1343410805': -1.0,\n",
       " '1501339385': -1.0,\n",
       " 'netease-62': 0.0,\n",
       " 'suyibei6': 0.0,\n",
       " 'fiona_fzy1': 0.0,\n",
       " '839014_xm': -1.0,\n",
       " '578759005_': -1.0,\n",
       " '578759007_': 0.0,\n",
       " 'duhuisi13': -1.0,\n",
       " 'yaosihui25': 0.0,\n",
       " 'duxiyi2699': 0.0,\n",
       " 'xueefu54': 0.0,\n",
       " 'mabofu0329': 0.0,\n",
       " '89595_rra': -1.0,\n",
       " 'mnlsdwx': 0.0,\n",
       " 'mahongchun': -1.0,\n",
       " 'yulibo9517': 0.0,\n",
       " 'cuiyanyan2': 0.0,\n",
       " 'daijina1': 0.0,\n",
       " 'a186407875': -1.0,\n",
       " 'kenzhong': -1.0,\n",
       " '1598907664': -1.0,\n",
       " 'lijyie': -1.0,\n",
       " 'yiyun1123': 0.0,\n",
       " 'rha1230': -1.0,\n",
       " 'f8528q': 0.0,\n",
       " 'wyphandy': -1.0,\n",
       " 'aqnzr_697': -1.0,\n",
       " 'qq-ed9a9d7': -1.0,\n",
       " '1390137878': -1.0,\n",
       " 'hczsun': 0.0,\n",
       " 'cccksccc': 0.5,\n",
       " 'qq-2a7837c': -1.0,\n",
       " 'qq-ef1b78a': 0.0,\n",
       " 'qq-b313e62': 0.0,\n",
       " 'szj1136': -1.0,\n",
       " 'wangtao884': 0.0,\n",
       " 'darrenhua': 0.0,\n",
       " 'qq-a8ad6f3': 0.14285714285714285,\n",
       " 'kunyedong': 0.0,\n",
       " 'paoqi1101x': -1.0,\n",
       " 'wanhede51': -1.0,\n",
       " 'cifang': -1.0,\n",
       " 'rangwenkou': 0.0,\n",
       " '282529376_': -1.0,\n",
       " 'twowj_y': -1.0,\n",
       " 'qwerty9203': -1.0,\n",
       " 'tmall-1830': -1.0,\n",
       " 'tmall-1912': -1.0,\n",
       " '1389968980': -1.0,\n",
       " 'yxl1387617': -1.0,\n",
       " 'qq-a5caa71': -1.0,\n",
       " 'duxiang962': 0.4444444444444444,\n",
       " 'wendy200_t': 0.0,\n",
       " '1335929252': 0.2857142857142857,\n",
       " 'raymondjam': -1.0,\n",
       " 'xbdxs2008': 0.0,\n",
       " 'wx7049351': 0.1111111111111111,\n",
       " 'qq-4b5c8b1': -1.0,\n",
       " '1073268780': -1.0,\n",
       " 'qq-1c8e3ce': 0.0,\n",
       " '1866499308': -1.0,\n",
       " 'yst523300': 0.0,\n",
       " 'chaokeaiqi': 0.0,\n",
       " 'woshinana_': -1.0,\n",
       " 'renbai77': 0.6666666666666666,\n",
       " '1512285893': 0.0,\n",
       " 'w738253': 0.0,\n",
       " '184293268_': -1.0,\n",
       " '746221121_': -1.0,\n",
       " 'liaosb': 0.0,\n",
       " 'qq-dc2b78b': 0.0,\n",
       " '1341606313': 0.0,\n",
       " 'ccnulp_gas': 0.0,\n",
       " 'xiongyujun': 0.5555555555555556,\n",
       " 'gome7zn1vx': -1.0,\n",
       " '1895899166': 0.0,\n",
       " 'jsm830': 0.14285714285714285,\n",
       " 'qq-2a927a1': 0.0,\n",
       " '1805914108': -1.0,\n",
       " 'sunjunqian': -1.0,\n",
       " 'weiwie9910': -1.0,\n",
       " 'rdfgood': 0.0,\n",
       " '1381403358': 0.0,\n",
       " 'victor_197': 0.0,\n",
       " 'rdfzhillar': 0.0,\n",
       " '陈国珍': -1.0,\n",
       " 'pp10394470': 0.5,\n",
       " 'qq-76ee7a5': -1.0,\n",
       " 'lishicun': -1.0,\n",
       " 'lglhljl': 1.0,\n",
       " 'hongting21': 1.0,\n",
       " 'peaceshare': 1.0,\n",
       " 'guoxuefu': -1.0,\n",
       " 'tianxiaya6': -1.0,\n",
       " 'mossrose': 1.0,\n",
       " 'hungshuiji': 0.3333333333333333,\n",
       " 'qq-f1d3081': 0.9230769230769231,\n",
       " 'wangtrue': 0.6666666666666666,\n",
       " '1342297814': 1.0,\n",
       " 'cbhsij': 1.0,\n",
       " 'ywk5959815': 0.5,\n",
       " 'golg898y': -1.0,\n",
       " 'qq49983621': 0.5,\n",
       " 'gyouye80': -1.0,\n",
       " 'lvrunze': -1.0,\n",
       " '1527319029': 1.0,\n",
       " 'yinlinhai1': 0.3333333333333333,\n",
       " 'D2-4194953': -1.0,\n",
       " 'D2-2856059': -1.0,\n",
       " 'D2-1454488': 0.5,\n",
       " 'D2-1258440': 0.5,\n",
       " 'wp37104307': 0.6666666666666666,\n",
       " '446788795_': 1.0,\n",
       " '1866431171': -1.0,\n",
       " 'wen510': -1.0,\n",
       " 'zhou_guome': 0.5,\n",
       " 'qzl188343_': 0.25,\n",
       " 'zhenhao520': 1.0,\n",
       " 'qq-ca1e10c': -1.0,\n",
       " 'aaron74@co': 0.21739130434782608,\n",
       " 'sushanghon': -1.0,\n",
       " 'hiahou': -1.0,\n",
       " 'j023@coo8': 0.0,\n",
       " 'wanda_v': 0.0,\n",
       " 'glx0241012': 0.5,\n",
       " 'lv7894': -1.0,\n",
       " 'qq-6fb5427': 0.0,\n",
       " 'pupuluck19': -1.0,\n",
       " 'kimi35095': -1.0,\n",
       " 'fleetsky': -1.0,\n",
       " 'hendrygto': -1.0,\n",
       " 'kevin12321': 0.0,\n",
       " 'huanga79': 0.0,\n",
       " 'jieyin1625': 0.0,\n",
       " 'xuxiakeyou': 0.0,\n",
       " 'xbfb0303': 0.0,\n",
       " 'lr91829': -1.0,\n",
       " 'masiyu888': 0.0,\n",
       " 'pxc6': -1.0,\n",
       " 'hebjingmao': -1.0,\n",
       " '1395507513': 0.0,\n",
       " 'zhsssri': -1.0,\n",
       " '顺顺鑫鑫6': -1.0,\n",
       " '1552429878': 0.0,\n",
       " 'sun4905271': -1.0,\n",
       " 'tj15822729': 0.0,\n",
       " 'ssfishyu': -1.0,\n",
       " 'dmm_nb': 0.0,\n",
       " 'ch8211': -1.0,\n",
       " 'kevinqin20': 0.0,\n",
       " 'czw699wh': -1.0,\n",
       " 'xinhua8812': -1.0,\n",
       " 'liujingfen': 0.0,\n",
       " 'mapyaoq': -1.0,\n",
       " 'lichao7572': -1.0,\n",
       " 'sj_siwon': 0.0,\n",
       " 'gqt822': 0.5,\n",
       " 'qq-33b64c2': 0.0,\n",
       " '关山村': -1.0,\n",
       " 'fsgm2012': 0.0,\n",
       " 'ln821211': 0.0,\n",
       " 'maweifeng8': 0.0,\n",
       " 'yorkchease': -1.0,\n",
       " 'qq-52aa13e': -1.0,\n",
       " 'qq-568fb38': -1.0,\n",
       " 'yany72': -1.0,\n",
       " '1357568296': 0.0,\n",
       " '1860120438': 0.0,\n",
       " '1900825@51': 0.0,\n",
       " 'xx173xx': 0.3333333333333333,\n",
       " '1371181630': 0.0,\n",
       " '740319637_': -1.0,\n",
       " 'lgx360': -1.0,\n",
       " 'lhj2971682': -1.0,\n",
       " '1363250184': 0.0,\n",
       " 'jjgkdd': 0.0,\n",
       " 'pupu123@co': 0.0,\n",
       " '7925265@51': 0.0,\n",
       " 'v_vivian@c': 0.5,\n",
       " 'sweet19889': 0.0,\n",
       " '1891858978': -1.0,\n",
       " 'suesis': -1.0,\n",
       " '370149618_': -1.0,\n",
       " 'su33@coo8': -1.0,\n",
       " 'ceokrain': -1.0,\n",
       " 'qq-0ef205f': -1.0,\n",
       " 'jackja': 0.0,\n",
       " 'windzpl': -1.0,\n",
       " 'panfeng082': -1.0,\n",
       " 'yyy001175': 0.0,\n",
       " 'a41056349': 0.25,\n",
       " 'fuxiangfei': 0.0,\n",
       " 'matt206': -1.0,\n",
       " '29875574_r': 0.0,\n",
       " 'happyhuang': 0.0,\n",
       " 'yyy001177': 0.0,\n",
       " 'zym52528': 0.0,\n",
       " 'qq-e8bb42e': -1.0,\n",
       " 'jd1974': -1.0,\n",
       " 'gg0528': 0.0,\n",
       " 'qq-5b99fd3': 0.3333333333333333,\n",
       " 'qq-77500d2': 0.0,\n",
       " '1353920636': -1.0,\n",
       " 'wuxikun': 0.0,\n",
       " '171996574_': -1.0,\n",
       " 'exunzz': 0.0,\n",
       " 'tmall-9099': 0.0,\n",
       " 'tmall-8038': -1.0,\n",
       " 'tmall-1807': 0.0,\n",
       " 'kaxyfgd': 0.0,\n",
       " 'hemming200': 0.0,\n",
       " 'znkjgl': 0.0,\n",
       " '1865327054': 0.0,\n",
       " '1337185858': 0.0,\n",
       " 'cfyfree': 0.0,\n",
       " 'fjpt553055': 0.0,\n",
       " 'flynn8': -1.0,\n",
       " 'gome_shdpt': 0.0,\n",
       " '1313549200': -1.0,\n",
       " 'luxiaoqing': 0.0,\n",
       " 'candysheva': 0.0,\n",
       " '白云粮油': -1.0,\n",
       " '1350137929': -1.0,\n",
       " 'arena2011': 0.0,\n",
       " 'wanggang11': 0.0,\n",
       " 'yao1362512': -1.0,\n",
       " 'nl270423': 0.0,\n",
       " 'guoaigu592': -1.0,\n",
       " 'yuyvbei640': 0.0,\n",
       " 'susixue378': 0.0,\n",
       " 'yuyuesi60': 0.0,\n",
       " 'chengli268': -1.0,\n",
       " 'sulian517': 0.0,\n",
       " 'linjiebin2': 0.0,\n",
       " 'qq13682590': -1.0,\n",
       " 'baidagua1': 0.5,\n",
       " 'sunwuye943': 0.0,\n",
       " '1334501678': -1.0,\n",
       " 'shanhuchon': 0.3333333333333333,\n",
       " 'xiangqing0': 0.0,\n",
       " 'czap2013': 0.0,\n",
       " 'jy_6020026': 0.0,\n",
       " 'smswhy': 0.0,\n",
       " 'jianglinxi': -1.0,\n",
       " 'maibote': 0.0,\n",
       " 'cqwz6zg32b': -1.0,\n",
       " 'manlianfei': -1.0,\n",
       " 'ken2003_b': -1.0,\n",
       " 'minbenzj': 0.0,\n",
       " 'lhf3512700': 0.0,\n",
       " 'shangcaihu': -1.0,\n",
       " 'ceresfirm': -1.0,\n",
       " 'loseforeve': -1.0,\n",
       " 'h502965011': 0.0,\n",
       " 'qq-97f8f26': 0.5,\n",
       " 'zhywjh': 0.0,\n",
       " 'kinux2013': 0.0,\n",
       " 'qq-c1b3c78': -1.0,\n",
       " 'admiral316': -1.0,\n",
       " 'xyu701024': 0.0,\n",
       " 'gome_dyzyu': 0.2,\n",
       " 'heyiyan2': 0.0,\n",
       " 'qiuqinan95': -1.0,\n",
       " 'lailiyi084': 0.0,\n",
       " 'qq-657fb45': 0.0,\n",
       " 'lovingbird': 0.0,\n",
       " '1335292669': 0.0,\n",
       " 'hqm-057100': 0.3333333333333333,\n",
       " 'zam1911797': -1.0,\n",
       " 'wangchuanj': 0.0,\n",
       " 'qq-b6579a8': 0.0,\n",
       " 'qq-8681297': 0.0,\n",
       " '1340340645': 0.0,\n",
       " 'baiweipiji': -1.0,\n",
       " '394549011_': -1.0,\n",
       " 'tmall-6038': 0.0,\n",
       " 'tmall-6670': -1.0,\n",
       " 'tmall-6269': -1.0,\n",
       " 'D2-1282394': -1.0,\n",
       " 'D2-1567531': -1.0,\n",
       " 'D2-2897879': -1.0,\n",
       " 'D2-3131213': -1.0,\n",
       " 'D2-3485255': -1.0,\n",
       " 'D2-2321748': -1.0,\n",
       " 'yongzedich': -1.0,\n",
       " '1363869796': 0.0,\n",
       " 'gaoaoao198': -1.0,\n",
       " 'D2-1540888': -1.0,\n",
       " 'D2-2933379': -1.0,\n",
       " 'D2-8534643': -1.0,\n",
       " 'D2-1244603': -1.0,\n",
       " 'D2-3317493': -1.0,\n",
       " 'qq65298351': -1.0,\n",
       " 'ztguoqian': -1.0,\n",
       " 'a134745384': 0.125,\n",
       " '353908610_': 0.0,\n",
       " 'zgq830920': 0.0,\n",
       " '1590514388': 0.0,\n",
       " 'winnerliy': 0.0,\n",
       " 'lilindi541': 0.0,\n",
       " '1869654447': 0.0,\n",
       " 'panbaoge': 0.0,\n",
       " 'gomed4ddgk': -1.0,\n",
       " 'xuyinbing1': 0.0,\n",
       " '78290211_c': -1.0,\n",
       " 'fudanjie': 0.0,\n",
       " 'zhanghuiqi': -1.0,\n",
       " '290578181_': -1.0,\n",
       " 'aichezu200': 0.0,\n",
       " 'lynn9999': -1.0,\n",
       " 'jeanbe': 0.0,\n",
       " 'qq-ec43bc6': -1.0,\n",
       " 'gwh1792356': 0.2,\n",
       " 'hdm1953082': 0.2222222222222222,\n",
       " '1350129140': 0.0,\n",
       " 'sqzyzxh_m': -1.0,\n",
       " 'chanel-7': 0.4,\n",
       " '898058897_': 0.0,\n",
       " 'ab81149728': 0.0,\n",
       " '1163062743': -1.0,\n",
       " 'cyllgy': 0.0,\n",
       " 'zhangyanyu': 0.0,\n",
       " 'wl790517': 0.0,\n",
       " 'qq-3a908eb': 0.0,\n",
       " 'lidongs': 0.0,\n",
       " 'danazhu_ct': 0.0,\n",
       " 'xiaoxiao81': 0.0,\n",
       " 'qq-afb3f9d': 0.0,\n",
       " '83851909ab': 0.0,\n",
       " 'guoruig': 0.25,\n",
       " 'erener6336': 0.0,\n",
       " 'nicky929': 0.0,\n",
       " '1564111060': -1.0,\n",
       " 'zlvoice@co': 0.7333333333333333,\n",
       " 'gsls840503': -1.0,\n",
       " 'qq-f183e7a': -1.0,\n",
       " 'ruobing888': -1.0,\n",
       " 'qq-5084139': 0.0,\n",
       " '522046712_': 0.0,\n",
       " 'mllj18_szf': 0.0,\n",
       " '45707': 0.1,\n",
       " 'xiaojiang1': 0.0,\n",
       " 'baley2005': 0.0,\n",
       " 'langzillh': 0.0,\n",
       " 'shanshuo20': 0.2,\n",
       " '1375216865': 0.0,\n",
       " 'eizo033_gn': -1.0,\n",
       " 'hmily38468': -1.0,\n",
       " 'zuihou016_': 0.0,\n",
       " '1501854780': -1.0,\n",
       " 'zhjxxs_kmh': -1.0,\n",
       " 'qq-66b9b50': 0.0,\n",
       " 'likun7876': 0.8333333333333334,\n",
       " 'baochen87': 1.0,\n",
       " 'qq-7cabc15': -1.0,\n",
       " 'loveyougoo': 1.0,\n",
       " 'yongnide': 0.5,\n",
       " 'getao1976': 0.6666666666666666,\n",
       " 'qq-e11af4b': 0.5,\n",
       " 'fibown': 0.3333333333333333,\n",
       " 'longyu51': -1.0,\n",
       " 'proshan': -1.0,\n",
       " 'lxjgmg': 1.0,\n",
       " 'gome_wilmt': -1.0,\n",
       " '1865326028': 1.0,\n",
       " 'hugo8868': 0.3333333333333333,\n",
       " 'sunh_z': 1.0,\n",
       " 'sohusina': -1.0,\n",
       " '700212cr': 0.5,\n",
       " 'lin956129': -1.0,\n",
       " 'chnbbc_zz': 0.5,\n",
       " 'ztj009': 0.4,\n",
       " 'a186062688': 0.5,\n",
       " 'ebuhui': 1.0,\n",
       " 'jixingxiao': -1.0,\n",
       " '478178018_': -1.0,\n",
       " 'D2-2492230': -1.0,\n",
       " 'kx402yxm': 1.0,\n",
       " 'youke_zhao': -1.0,\n",
       " 'yuzhitang': 1.0,\n",
       " 'qq-de725ef': 0.5,\n",
       " 'lyh2970201': -1.0,\n",
       " 'yaoxiedu': -1.0,\n",
       " 'yxm1371728': 0.5,\n",
       " 'lkforppe32': -1.0,\n",
       " 'chenchendn': 0.5,\n",
       " 'glyan1984': 1.0,\n",
       " 'gianniben': 0.5,\n",
       " 'klyzzhenyu': -1.0,\n",
       " 'replacerub': 0.4,\n",
       " 'gomeczfhtc': 0.5,\n",
       " 'rengreat': 1.0,\n",
       " '990239600_': 1.0,\n",
       " 'zhouxueqin': 0.6666666666666666,\n",
       " 'wallat': 0.3333333333333333,\n",
       " 'appa01': 1.0,\n",
       " 'qq-8a82e94': 0.5,\n",
       " 'qwdssd': 0.3333333333333333,\n",
       " 'qq-7c3d5c1': 0.5,\n",
       " '1353291552': 1.0,\n",
       " '1383132286': 0.6666666666666666,\n",
       " 'wanghaibin': 0.6153846153846154,\n",
       " 'dyhqiq': 0.5,\n",
       " 'qq-62e95e8': 0.5,\n",
       " 'me8888@coo': -1.0,\n",
       " 'sincerity': 1.0,\n",
       " 'sina-27795': 0.7450980392156863,\n",
       " 'gome_dsvee': 1.0,\n",
       " 'hsidoid': 0.5,\n",
       " 'gushsj': 0.3333333333333333,\n",
       " 'wdwduhu': 0.75,\n",
       " 'dhuwwds': 0.5,\n",
       " 'qq-a3e4e96': -1.0,\n",
       " 'qq-e6e673e': -1.0,\n",
       " '280297786_': 0.75,\n",
       " 'lenka00': 0.5,\n",
       " 'D2-8170919': -1.0,\n",
       " 'liaobingyu': 1.0,\n",
       " 'qq-7044e7e': -1.0,\n",
       " '244319298_': 1.0,\n",
       " 'njdfyh': -1.0,\n",
       " 'chentest': 1.0,\n",
       " 'rong3x': 0.6666666666666666,\n",
       " 'liqili78': 0.3333333333333333,\n",
       " 'zongyoulin': 0.6,\n",
       " '919386986_': 1.0,\n",
       " 'totl': 1.0,\n",
       " 'whsy17_d': 0.75,\n",
       " 'quzhaoz_c': -1.0,\n",
       " '997623867_': -1.0,\n",
       " '1590250959': -1.0,\n",
       " '992842898_': -1.0,\n",
       " 'lz1993': 0.3333333333333333,\n",
       " 'wuxiaoqi90': 0.6666666666666666,\n",
       " 'xiongli817': 0.15789473684210525,\n",
       " 'qq-704ed9b': 0.5555555555555556,\n",
       " 'zp20229': 0.6,\n",
       " 'zhujun953': 0.95,\n",
       " 'tf_cac_byz': 0.4,\n",
       " 'qq-ffeb04d': 0.5,\n",
       " 'shuaiandsh': 0.5,\n",
       " '1863061193': 1.0,\n",
       " ...}"
      ]
     },
     "execution_count": 299,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dict(df[\"用户异常率\"])#转换成字典"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 302,
   "id": "6746379d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    0.133333\n",
       "1    0.333333\n",
       "2    0.000000\n",
       "3   -1.000000\n",
       "4    0.133333\n",
       "Name: 用户异常率, dtype: float64"
      ]
     },
     "execution_count": 302,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#进行映射\n",
    "train[\"用户异常率\"] = train[\"下单用户ID\" ].map(dict(df[\"用户异常率\"]))\n",
    "train[\"用户异常率\"].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 304,
   "id": "a3c5dc05",
   "metadata": {},
   "outputs": [],
   "source": [
    "dic = {}\n",
    "for i in test[\"下单用户ID\"]:\n",
    "    if i in MultipleBuyRatio.index:\n",
    "        dic[i] = MultipleBuyRatio[i]\n",
    "    else:\n",
    "        dic[i] = -1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 306,
   "id": "d8c321a7",
   "metadata": {},
   "outputs": [],
   "source": [
    "test[\"用户异常率\"]= test[\"下单用户ID\"].map(dic)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 307,
   "id": "6cbee3dc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002042497</td>\n",
       "      <td>三星</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0.206912</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.133333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002212182</td>\n",
       "      <td>品道天元</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>8001748897</td>\n",
       "      <td>清华同方</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>14</td>\n",
       "      <td>0.212617</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>1000341307</td>\n",
       "      <td>乐扣乐扣</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>28</td>\n",
       "      <td>0.236769</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "      <td>0.133333</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌      订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4283851335       5       1  8002042497    三星  766000.0     200     1   \n",
       "1   1  4281111595       2       1  8002199518  纬度空间     100.0     100     1   \n",
       "2   0  4106833871       3       1  8002212182  品道天元    8800.0     100     1   \n",
       "3   0  4253622967      10       1  8001748897  清华同方     880.0     100     1   \n",
       "4   0  4276159555       3       0  1000341307  乐扣乐扣    4900.0     100     1   \n",
       "\n",
       "   支付方式  ...  省份     省份异常率  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱  \\\n",
       "0     0  ...   0  0.206912   0.261565   0.294727  0.167849   9.0   \n",
       "1     0  ...  11  0.222260   0.262840   0.294727  0.167849   0.0   \n",
       "2     0  ...  11  0.222260   0.235079   0.294727  0.167849   3.0   \n",
       "3     0  ...  14  0.212617   0.215029   0.294727  0.167849   0.0   \n",
       "4     0  ...  28  0.236769   0.235079   0.178732  0.167849   2.0   \n",
       "\n",
       "            分箱均值  销量分箱      分箱异常     用户异常率  \n",
       "0  766000.000000     1  1.000000  0.133333  \n",
       "1     136.243951     1  0.203899  0.333333  \n",
       "2    9128.895833     1  0.264881  0.000000  \n",
       "3     136.243951     1  0.203899 -1.000000  \n",
       "4    4165.485313     1  0.326309  0.133333  \n",
       "\n",
       "[5 rows x 25 columns]"
      ]
     },
     "execution_count": 307,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 308,
   "id": "d753f0b8",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>省份</th>\n",
       "      <th>省份异常率</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4276537082</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>23</td>\n",
       "      <td>0.215807</td>\n",
       "      <td>0.201848</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3977175284</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002237611</td>\n",
       "      <td>伊斯贝</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>23</td>\n",
       "      <td>0.215807</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4245023523</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4284515355</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>8001873245</td>\n",
       "      <td>佳星</td>\n",
       "      <td>21450.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>0.222260</td>\n",
       "      <td>0.193856</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4284735147</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002202146</td>\n",
       "      <td>奕辰</td>\n",
       "      <td>1950.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>6</td>\n",
       "      <td>0.215111</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 25 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌     订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4276537082      11       1  8001992420    樱花  19900.0     100     1   \n",
       "1   0  3977175284       5       1  8002237611   伊斯贝    990.0     100     1   \n",
       "2   0  4245023523       2       1  8002199518  纬度空间    100.0     100     1   \n",
       "3   0  4284515355       9       1  8001873245    佳星  21450.0      50     1   \n",
       "4   0  4284735147       3       1  8002202146    奕辰   1950.0      50     1   \n",
       "\n",
       "   支付方式  ...  省份     省份异常率  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱  \\\n",
       "0     0  ...  23  0.215807   0.201848   0.294727  0.167849   4.0   \n",
       "1     0  ...  23  0.215807   0.261565   0.294727  0.167849   1.0   \n",
       "2     0  ...  11  0.222260   0.262840   0.294727  0.167849   0.0   \n",
       "3     0  ...  11  0.222260   0.193856   0.294727  0.167849   4.0   \n",
       "4     0  ...   6  0.215111   0.235079   0.294727  0.167849   1.0   \n",
       "\n",
       "           分箱均值  销量分箱      分箱异常     用户异常率  \n",
       "0  16872.602041     1  0.336735 -1.000000  \n",
       "1   1775.061962     1  0.246125 -1.000000  \n",
       "2    136.243951     1  0.203899  0.333333  \n",
       "3  16872.602041     1  0.336735 -1.000000  \n",
       "4   1775.061962     1  0.246125 -1.000000  \n",
       "\n",
       "[5 rows x 25 columns]"
      ]
     },
     "execution_count": 308,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 309,
   "id": "e4ff5a18",
   "metadata": {},
   "outputs": [],
   "source": [
    "def GroupByFeature2(column ,train,test, newcolumn,ratio) :\n",
    "    df = pd.DataFrame(index=train[ column] . unique())\n",
    "    df[newcolumn] = -1\n",
    "    df.loc[ratio.index , newcolumn] = ratio\n",
    "    train[newcolumn] = train[column ].map(dict( df[newcolumn]))\n",
    "    dic = {}\n",
    "    for i in test[column]:\n",
    "        if i in ratio.index:\n",
    "            dic[i] = ratio[i]\n",
    "        else:\n",
    "            dic[i] = -1\n",
    "    test[newcolumn] = test[column] .map(dic)\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 310,
   "id": "07ed29b3",
   "metadata": {},
   "outputs": [],
   "source": [
    "train,test = GroupByFeature2(\"商品ID\" , train,test,\"商品异常率\" ,ProductIDRatio)\n",
    "train,test = GroupByFeature2(\"品牌\" , train,test,\"品牌异常率\",BrandIDRatio)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 311,
   "id": "a57a2313",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4276537082</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>8001992420</td>\n",
       "      <td>樱花</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.201848</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3977175284</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>8002237611</td>\n",
       "      <td>伊斯贝</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.153846</td>\n",
       "      <td>0.372263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4245023523</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>8002199518</td>\n",
       "      <td>纬度空间</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4284515355</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>8001873245</td>\n",
       "      <td>佳星</td>\n",
       "      <td>21450.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.193856</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.162162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4284735147</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>8002202146</td>\n",
       "      <td>奕辰</td>\n",
       "      <td>1950.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.248485</td>\n",
       "      <td>0.240741</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道        商品ID    品牌     订单金额  商品销售数量  订单渠道  \\\n",
       "0   1  4276537082      11       1  8001992420    樱花  19900.0     100     1   \n",
       "1   0  3977175284       5       1  8002237611   伊斯贝    990.0     100     1   \n",
       "2   0  4245023523       2       1  8002199518  纬度空间    100.0     100     1   \n",
       "3   0  4284515355       9       1  8001873245    佳星  21450.0      50     1   \n",
       "4   0  4284735147       3       1  8002202146    奕辰   1950.0      50     1   \n",
       "\n",
       "   支付方式  ... 商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱          分箱均值  销量分箱  \\\n",
       "0     0  ...  0.201848   0.294727  0.167849   4.0  16872.602041     1   \n",
       "1     0  ...  0.261565   0.294727  0.167849   1.0   1775.061962     1   \n",
       "2     0  ...  0.262840   0.294727  0.167849   0.0    136.243951     1   \n",
       "3     0  ...  0.193856   0.294727  0.167849   4.0  16872.602041     1   \n",
       "4     0  ...  0.235079   0.294727  0.167849   1.0   1775.061962     1   \n",
       "\n",
       "       分箱异常     用户异常率     商品异常率     品牌异常率  \n",
       "0  0.336735 -1.000000  0.000000  0.083333  \n",
       "1  0.246125 -1.000000  0.153846  0.372263  \n",
       "2  0.203899  0.333333  0.333333  0.250000  \n",
       "3  0.336735 -1.000000 -1.000000  0.162162  \n",
       "4  0.246125 -1.000000  0.248485  0.240741  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 311,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b20440ad",
   "metadata": {},
   "source": [
    "### 特征编码"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4e5b47bf",
   "metadata": {},
   "source": [
    "### 主要需要解决的问题是训练集没出现测试集出现的项"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "34b8b543",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import sklearn\n",
    "from sklearn.ensemble import VotingClassifier#投票算法\n",
    "from sklearn.ensemble import GradientBoostingClassifier as GBC\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "%matplotlib inline\n",
    "plt.rcParams [ \"font.sans-serif\"]=[ \"Simhei\" ]\n",
    "plt.rcParams[ \"axes.unicode_minus\" ]=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 328,
   "id": "79061026",
   "metadata": {},
   "outputs": [],
   "source": [
    "def ComplexEncode( column , train,test) :\n",
    "    dic = {}\n",
    "    feature = train.loc[ : ,column]\n",
    "    unique_ = np.sort(feature. unique( ))\n",
    "    for code, category in enumerate( unique_):\n",
    "        dic[category] = code\n",
    "    train[ column] = train[ column ].map(dic)\n",
    "    nullcheck = test[column].map(dic)\n",
    "    while nullcheck.isnull().sum() > 0:\n",
    "        print(\"出现了训练集未出现的类别\")\n",
    "        newcategory = test.loc[nullcheck .isnull(),column]. unique()\n",
    "        for i in newcategory :\n",
    "            dic[i] = len(dic)\n",
    "        nullcheck = test[column] .map(dic)\n",
    "    test[column] = nullcheck\n",
    "    return train,test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 329,
   "id": "54912fe2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "出现了训练集未出现的类别\n",
      "出现了训练集未出现的类别\n",
      "出现了训练集未出现的类别\n"
     ]
    }
   ],
   "source": [
    "for column in[\"下单用户ID\",\"商品ID\",\"品牌\"]:\n",
    "        train,test = ComplexEncode(column ,train,test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 325,
   "id": "ba147211",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>13080</td>\n",
       "      <td>199</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.340804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>15075</td>\n",
       "      <td>1856</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>15212</td>\n",
       "      <td>676</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.238462</td>\n",
       "      <td>0.286842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>11454</td>\n",
       "      <td>1568</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.296296</td>\n",
       "      <td>0.298387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4800</td>\n",
       "      <td>262</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>0.119565</td>\n",
       "      <td>0.179739</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道   商品ID    品牌      订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0   1  4283851335       5       1  13080   199  766000.0     200     1     0   \n",
       "1   1  4281111595       2       1  15075  1856     100.0     100     1     0   \n",
       "2   0  4106833871       3       1  15212   676    8800.0     100     1     0   \n",
       "3   0  4253622967      10       1  11454  1568     880.0     100     1     0   \n",
       "4   0  4276159555       3       0   4800   262    4900.0     100     1     0   \n",
       "\n",
       "   ...  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱           分箱均值  销量分箱      分箱异常  \\\n",
       "0  ...   0.261565   0.294727  0.167849   9.0  766000.000000     1  1.000000   \n",
       "1  ...   0.262840   0.294727  0.167849   0.0     136.243951     1  0.203899   \n",
       "2  ...   0.235079   0.294727  0.167849   3.0    9128.895833     1  0.264881   \n",
       "3  ...   0.215029   0.294727  0.167849   0.0     136.243951     1  0.203899   \n",
       "4  ...   0.235079   0.178732  0.167849   2.0    4165.485313     1  0.326309   \n",
       "\n",
       "      用户异常率     商品异常率     品牌异常率  \n",
       "0  0.133333  1.000000  0.340804  \n",
       "1  0.333333  0.333333  0.250000  \n",
       "2  0.000000  0.238462  0.286842  \n",
       "3 -1.000000  0.296296  0.298387  \n",
       "4  0.133333  0.119565  0.179739  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 325,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 330,
   "id": "3004ff89",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4276537082</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>12689</td>\n",
       "      <td>1406</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.201848</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3977175284</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>15601</td>\n",
       "      <td>339</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.153846</td>\n",
       "      <td>0.372263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4245023523</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>15075</td>\n",
       "      <td>1856</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4284515355</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>17252</td>\n",
       "      <td>393</td>\n",
       "      <td>21450.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.193856</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.162162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4284735147</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>15111</td>\n",
       "      <td>797</td>\n",
       "      <td>1950.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.248485</td>\n",
       "      <td>0.240741</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道   商品ID    品牌     订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0   1  4276537082      11       1  12689  1406  19900.0     100     1     0   \n",
       "1   0  3977175284       5       1  15601   339    990.0     100     1     0   \n",
       "2   0  4245023523       2       1  15075  1856    100.0     100     1     0   \n",
       "3   0  4284515355       9       1  17252   393  21450.0      50     1     0   \n",
       "4   0  4284735147       3       1  15111   797   1950.0      50     1     0   \n",
       "\n",
       "   ...  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱          分箱均值  销量分箱      分箱异常  \\\n",
       "0  ...   0.201848   0.294727  0.167849   4.0  16872.602041     1  0.336735   \n",
       "1  ...   0.261565   0.294727  0.167849   1.0   1775.061962     1  0.246125   \n",
       "2  ...   0.262840   0.294727  0.167849   0.0    136.243951     1  0.203899   \n",
       "3  ...   0.193856   0.294727  0.167849   4.0  16872.602041     1  0.336735   \n",
       "4  ...   0.235079   0.294727  0.167849   1.0   1775.061962     1  0.246125   \n",
       "\n",
       "      用户异常率     商品异常率     品牌异常率  \n",
       "0 -1.000000  0.000000  0.083333  \n",
       "1 -1.000000  0.153846  0.372263  \n",
       "2  0.333333  0.333333  0.250000  \n",
       "3 -1.000000 -1.000000  0.162162  \n",
       "4 -1.000000  0.248485  0.240741  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 330,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 331,
   "id": "65d089f3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "异常           0\n",
       "订单ID         0\n",
       "商品一级类别       0\n",
       "商品所属渠道       0\n",
       "商品ID         0\n",
       "品牌           0\n",
       "订单金额         0\n",
       "商品销售数量       0\n",
       "订单渠道         0\n",
       "支付方式         0\n",
       "下单用户ID       0\n",
       "城市           0\n",
       "下单分钟         0\n",
       "下单小时         0\n",
       "支付方式异常率      0\n",
       "省份           0\n",
       "省份异常率        0\n",
       "商品一级类别异常率    0\n",
       "商品所属渠道异常率    0\n",
       "订单渠道异常率      0\n",
       "金额分箱         0\n",
       "分箱均值         0\n",
       "销量分箱         0\n",
       "分箱异常         0\n",
       "用户异常率        0\n",
       "商品异常率        0\n",
       "品牌异常率        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 331,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 332,
   "id": "7718cc17",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "异常           0\n",
       "订单ID         0\n",
       "商品一级类别       0\n",
       "商品所属渠道       0\n",
       "商品ID         0\n",
       "品牌           0\n",
       "订单金额         0\n",
       "商品销售数量       0\n",
       "订单渠道         0\n",
       "支付方式         0\n",
       "下单用户ID       0\n",
       "城市           0\n",
       "下单分钟         0\n",
       "下单小时         0\n",
       "支付方式异常率      0\n",
       "省份           0\n",
       "省份异常率        0\n",
       "商品一级类别异常率    0\n",
       "商品所属渠道异常率    0\n",
       "订单渠道异常率      0\n",
       "金额分箱         0\n",
       "分箱均值         0\n",
       "销量分箱         0\n",
       "分箱异常         0\n",
       "用户异常率        0\n",
       "商品异常率        0\n",
       "品牌异常率        0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 332,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.isnull().sum()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "15d0cf01",
   "metadata": {},
   "source": [
    "# 模型构建"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "9dcd0704",
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import sklearn\n",
    "from sklearn.ensemble import VotingClassifier#投票算法\n",
    "from sklearn.ensemble import GradientBoostingClassifier as GBC\n",
    "from sklearn.ensemble import RandomForestClassifier as RFC\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import KFold\n",
    "from sklearn.model_selection import cross_val_score\n",
    "%matplotlib inline\n",
    "plt.rcParams [ \"font.sans-serif\"]=[ \"Simhei\" ]\n",
    "plt.rcParams[ \"axes.unicode_minus\" ]=False"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "b28f03f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "train=pd.read_csv(r'train.csv',index_col=0)\n",
    "test=pd.read_csv(r'test.csv',index_col=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c441ea68",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>13080</td>\n",
       "      <td>199</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.340804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>15075</td>\n",
       "      <td>1856</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>15212</td>\n",
       "      <td>676</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.238462</td>\n",
       "      <td>0.286842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>11454</td>\n",
       "      <td>1568</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.296296</td>\n",
       "      <td>0.298387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4800</td>\n",
       "      <td>262</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>0.119565</td>\n",
       "      <td>0.179739</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道   商品ID    品牌      订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0   1  4283851335       5       1  13080   199  766000.0     200     1     0   \n",
       "1   1  4281111595       2       1  15075  1856     100.0     100     1     0   \n",
       "2   0  4106833871       3       1  15212   676    8800.0     100     1     0   \n",
       "3   0  4253622967      10       1  11454  1568     880.0     100     1     0   \n",
       "4   0  4276159555       3       0   4800   262    4900.0     100     1     0   \n",
       "\n",
       "   ...  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱           分箱均值  销量分箱      分箱异常  \\\n",
       "0  ...   0.261565   0.294727  0.167849   9.0  766000.000000     1  1.000000   \n",
       "1  ...   0.262840   0.294727  0.167849   0.0     136.243951     1  0.203899   \n",
       "2  ...   0.235079   0.294727  0.167849   3.0    9128.895833     1  0.264881   \n",
       "3  ...   0.215029   0.294727  0.167849   0.0     136.243951     1  0.203899   \n",
       "4  ...   0.235079   0.178732  0.167849   2.0    4165.485313     1  0.326309   \n",
       "\n",
       "      用户异常率     商品异常率     品牌异常率  \n",
       "0  0.133333  1.000000  0.340804  \n",
       "1  0.333333  0.333333  0.250000  \n",
       "2  0.000000  0.238462  0.286842  \n",
       "3 -1.000000  0.296296  0.298387  \n",
       "4  0.133333  0.119565  0.179739  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3acbc498",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>异常</th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>4276537082</td>\n",
       "      <td>11</td>\n",
       "      <td>1</td>\n",
       "      <td>12689</td>\n",
       "      <td>1406</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.201848</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.083333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>3977175284</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>15601</td>\n",
       "      <td>339</td>\n",
       "      <td>990.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.153846</td>\n",
       "      <td>0.372263</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>4245023523</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>15075</td>\n",
       "      <td>1856</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>4284515355</td>\n",
       "      <td>9</td>\n",
       "      <td>1</td>\n",
       "      <td>17252</td>\n",
       "      <td>393</td>\n",
       "      <td>21450.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.193856</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>4.0</td>\n",
       "      <td>16872.602041</td>\n",
       "      <td>1</td>\n",
       "      <td>0.336735</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.162162</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>4284735147</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>15111</td>\n",
       "      <td>797</td>\n",
       "      <td>1950.0</td>\n",
       "      <td>50</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1775.061962</td>\n",
       "      <td>1</td>\n",
       "      <td>0.246125</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.248485</td>\n",
       "      <td>0.240741</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 27 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   异常        订单ID  商品一级类别  商品所属渠道   商品ID    品牌     订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0   1  4276537082      11       1  12689  1406  19900.0     100     1     0   \n",
       "1   0  3977175284       5       1  15601   339    990.0     100     1     0   \n",
       "2   0  4245023523       2       1  15075  1856    100.0     100     1     0   \n",
       "3   0  4284515355       9       1  17252   393  21450.0      50     1     0   \n",
       "4   0  4284735147       3       1  15111   797   1950.0      50     1     0   \n",
       "\n",
       "   ...  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱          分箱均值  销量分箱      分箱异常  \\\n",
       "0  ...   0.201848   0.294727  0.167849   4.0  16872.602041     1  0.336735   \n",
       "1  ...   0.261565   0.294727  0.167849   1.0   1775.061962     1  0.246125   \n",
       "2  ...   0.262840   0.294727  0.167849   0.0    136.243951     1  0.203899   \n",
       "3  ...   0.193856   0.294727  0.167849   4.0  16872.602041     1  0.336735   \n",
       "4  ...   0.235079   0.294727  0.167849   1.0   1775.061962     1  0.246125   \n",
       "\n",
       "      用户异常率     商品异常率     品牌异常率  \n",
       "0 -1.000000  0.000000  0.083333  \n",
       "1 -1.000000  0.153846  0.372263  \n",
       "2  0.333333  0.333333  0.250000  \n",
       "3 -1.000000 -1.000000  0.162162  \n",
       "4 -1.000000  0.248485  0.240741  \n",
       "\n",
       "[5 rows x 27 columns]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "2c4b094d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['异常', '订单ID', '商品一级类别', '商品所属渠道', '商品ID', '品牌', '订单金额', '商品销售数量',\n",
       "       '订单渠道', '支付方式', '下单用户ID', '城市', '下单分钟', '下单小时', '支付方式异常率', '省份',\n",
       "       '省份异常率', '商品一级类别异常率', '商品所属渠道异常率', '订单渠道异常率', '金额分箱', '分箱均值', '销量分箱',\n",
       "       '分箱异常', '用户异常率', '商品异常率', '品牌异常率'],\n",
       "      dtype='object')"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "ccb8a3c9",
   "metadata": {},
   "outputs": [],
   "source": [
    "Xtrain = train.iloc[ :,1:]\n",
    "Xtest = test.iloc[ : ,1:]\n",
    "Ytrain = train.iloc[ :,0]\n",
    "Ytest = test.iloc[ :,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "5c480dca",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>订单ID</th>\n",
       "      <th>商品一级类别</th>\n",
       "      <th>商品所属渠道</th>\n",
       "      <th>商品ID</th>\n",
       "      <th>品牌</th>\n",
       "      <th>订单金额</th>\n",
       "      <th>商品销售数量</th>\n",
       "      <th>订单渠道</th>\n",
       "      <th>支付方式</th>\n",
       "      <th>下单用户ID</th>\n",
       "      <th>...</th>\n",
       "      <th>商品一级类别异常率</th>\n",
       "      <th>商品所属渠道异常率</th>\n",
       "      <th>订单渠道异常率</th>\n",
       "      <th>金额分箱</th>\n",
       "      <th>分箱均值</th>\n",
       "      <th>销量分箱</th>\n",
       "      <th>分箱异常</th>\n",
       "      <th>用户异常率</th>\n",
       "      <th>商品异常率</th>\n",
       "      <th>品牌异常率</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4283851335</td>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>13080</td>\n",
       "      <td>199</td>\n",
       "      <td>766000.0</td>\n",
       "      <td>200</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18575</td>\n",
       "      <td>...</td>\n",
       "      <td>0.261565</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>9.0</td>\n",
       "      <td>766000.000000</td>\n",
       "      <td>1</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.340804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4281111595</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>15075</td>\n",
       "      <td>1856</td>\n",
       "      <td>100.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>34757</td>\n",
       "      <td>...</td>\n",
       "      <td>0.262840</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.333333</td>\n",
       "      <td>0.250000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4106833871</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>15212</td>\n",
       "      <td>676</td>\n",
       "      <td>8800.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>42323</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>3.0</td>\n",
       "      <td>9128.895833</td>\n",
       "      <td>1</td>\n",
       "      <td>0.264881</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.238462</td>\n",
       "      <td>0.286842</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4253622967</td>\n",
       "      <td>10</td>\n",
       "      <td>1</td>\n",
       "      <td>11454</td>\n",
       "      <td>1568</td>\n",
       "      <td>880.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>15730</td>\n",
       "      <td>...</td>\n",
       "      <td>0.215029</td>\n",
       "      <td>0.294727</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>0.0</td>\n",
       "      <td>136.243951</td>\n",
       "      <td>1</td>\n",
       "      <td>0.203899</td>\n",
       "      <td>-1.000000</td>\n",
       "      <td>0.296296</td>\n",
       "      <td>0.298387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4276159555</td>\n",
       "      <td>3</td>\n",
       "      <td>0</td>\n",
       "      <td>4800</td>\n",
       "      <td>262</td>\n",
       "      <td>4900.0</td>\n",
       "      <td>100</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>18575</td>\n",
       "      <td>...</td>\n",
       "      <td>0.235079</td>\n",
       "      <td>0.178732</td>\n",
       "      <td>0.167849</td>\n",
       "      <td>2.0</td>\n",
       "      <td>4165.485313</td>\n",
       "      <td>1</td>\n",
       "      <td>0.326309</td>\n",
       "      <td>0.133333</td>\n",
       "      <td>0.119565</td>\n",
       "      <td>0.179739</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "         订单ID  商品一级类别  商品所属渠道   商品ID    品牌      订单金额  商品销售数量  订单渠道  支付方式  \\\n",
       "0  4283851335       5       1  13080   199  766000.0     200     1     0   \n",
       "1  4281111595       2       1  15075  1856     100.0     100     1     0   \n",
       "2  4106833871       3       1  15212   676    8800.0     100     1     0   \n",
       "3  4253622967      10       1  11454  1568     880.0     100     1     0   \n",
       "4  4276159555       3       0   4800   262    4900.0     100     1     0   \n",
       "\n",
       "   下单用户ID  ...  商品一级类别异常率  商品所属渠道异常率   订单渠道异常率  金额分箱           分箱均值  销量分箱  \\\n",
       "0   18575  ...   0.261565   0.294727  0.167849   9.0  766000.000000     1   \n",
       "1   34757  ...   0.262840   0.294727  0.167849   0.0     136.243951     1   \n",
       "2   42323  ...   0.235079   0.294727  0.167849   3.0    9128.895833     1   \n",
       "3   15730  ...   0.215029   0.294727  0.167849   0.0     136.243951     1   \n",
       "4   18575  ...   0.235079   0.178732  0.167849   2.0    4165.485313     1   \n",
       "\n",
       "       分箱异常     用户异常率     商品异常率     品牌异常率  \n",
       "0  1.000000  0.133333  1.000000  0.340804  \n",
       "1  0.203899  0.333333  0.333333  0.250000  \n",
       "2  0.264881  0.000000  0.238462  0.286842  \n",
       "3  0.203899 -1.000000  0.296296  0.298387  \n",
       "4  0.326309  0.133333  0.119565  0.179739  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "Xtrain.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e2412e91",
   "metadata": {},
   "outputs": [],
   "source": [
    "dtrain = xgb. DMatrix(Xtrain , Ytrain)\n",
    "dtest = xgb . DMatrix( Xtest,Ytest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2796b152",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RFC(n_estimators=200 , random_state=1412)\n",
    "gbdc = GBC(n_estimators=200 ,random_state=1412)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "42f35c5e",
   "metadata": {},
   "outputs": [],
   "source": [
    "cv=KFold(n_splits=5,shuffle=True,random_state=1412)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9d080e9f",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_gbdc_cv = cross_val_score(gbdc ,Xtrain,Ytrain,cv=cv)#"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ae2fb84f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8796969580761204"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_gbdc_cv.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "af88e14f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.4755477984739419e-06"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_gbdc_cv.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "109fd259",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_rf_cv = cross_val_score(rf,Xtrain, Ytrain,cv=cv)#随机森林"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "5e782e91",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8755606234535511"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_rf_cv.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "db67ed70",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.313998039659677e-06"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_rf_cv.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "9b14c6ff",
   "metadata": {},
   "outputs": [],
   "source": [
    "#xgb\n",
    "param = { \"objective\" : 'binary:logistic'#交叉熵损失\n",
    "         , \"eval_metric\" : \"error\"#不支持准确率用错误率\n",
    "         , \"seed\":1412}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "28d3cfc3",
   "metadata": {},
   "outputs": [],
   "source": [
    "xgbcv = xgb.cv(param,dtrain\n",
    ",num_boost_round=200 ,nfold=5, seed=1412, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "b7217063",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8763007891257131"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "1 - xgbcv .loc[199,\"test-error-mean\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "b0163291",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf= RFC(n_estimators=200, random_state=1412)\n",
    "gbdc = GBC(n_estimators=200,random_state=1412)\n",
    "cv = KFold(n_splits=5, shuffle=True,random_state=1412)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "8d1d5c00",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_gbdc_ev = cross_val_score(gbdc,Xtrain, Ytrain,cv=cv ,scoring=\"roc_auc\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "95626a98",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9351198464868995"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_gbdc_ev.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "b4d46fb6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.090105081997864e-07"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_gbdc_ev.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "d2c60187",
   "metadata": {},
   "outputs": [],
   "source": [
    "result_rf_cv = cross_val_score(rf,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "a247c09e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9279359132414905"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_rf_cv.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "3f6d00bb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1.989640502570034e-06"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_rf_cv.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "6e4d2836",
   "metadata": {},
   "outputs": [],
   "source": [
    "param2 = { \"objective\" : 'binary:logistic'#交叉熵损失\n",
    "         , \"eval_metric\" : \"auc\"#不支持准确率用错误率\n",
    "         , \"seed\":1412}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "e62470e1",
   "metadata": {},
   "outputs": [],
   "source": [
    "xgbcv = xgb.cv(param2,dtrain\n",
    ",num_boost_round=200 ,nfold=5, seed=1412, shuffle=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "bf378177",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9331852499438715"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgbcv. loc[ 199, \"test-auc-mean\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "a10e8a47",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "2.769675238779466e-07"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgbcv . loc[ 199 , \"test-auc-std\"]**2"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a36fc472",
   "metadata": {},
   "source": [
    "# 依照AUC 进行调参"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "3fd083d6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{0: 0.5, 1: 0.5}\n",
      "\t rf_mean: 0.92837\n",
      "\t rf_var :1.9601922117381135e-06\n",
      "{0: 0.5, 1: 1}\n",
      "\t rf_mean: 0.92906\n",
      "\t rf_var :1.5672759828228238e-06\n",
      "balanced\n",
      "\t rf_mean: 0.92934\n",
      "\t rf_var :2.025161228540485e-06\n",
      "{0: 0.5, 1: 2}\n",
      "\t rf_mean: 0.92918\n",
      "\t rf_var :1.7008781239517574e-06\n",
      "{0: 0.5, 1: 2.5}\n",
      "\t rf_mean: 0.92942\n",
      "\t rf_var :1.8426142060011882e-06\n"
     ]
    }
   ],
   "source": [
    "for weights in [{0:0.5,1:0.5},{0:0.5,1:1} , \"balanced\" , { 0:0.5,1:2},{0:0.5,1:2.5}]:\n",
    "    cv = KFold(n_splits=5,shuffle=True , random_state=1412)\n",
    "    rf = RFC(n_estimators=200,random_state=1412,class_weight=weights)\n",
    "    rfcv = cross_val_score(rf,Xtrain,Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    print(weights)\n",
    "    print(\"\\t rf_mean: {:.5f}\".format(rfcv.mean()))\n",
    "    print(\"\\t rf_var :{}\".format(rfcv.var()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "id": "66a0df29",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.05\n",
      "\t xgb_mean:0.93490\n",
      "\t xgb_std: 4.6381085652249874e-07\n",
      "0.03\n",
      "\t xgb_mean:0.93526\n",
      "\t xgb_std: 9.635552240886314e-07\n",
      "0.01\n",
      "\t xgb_mean:0.93509\n",
      "\t xgb_std: 1.3783179178877014e-06\n"
     ]
    }
   ],
   "source": [
    "for weights in [0.05,0.03,0.01]:\n",
    "    num_round=200\n",
    "    param = { \"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" : weights}\n",
    "    xgbcv = xgb.cv(param,dtrain,num_boost_round=num_round,nfold=5,seed=1412,shuffle=True)\n",
    "    print(weights)\n",
    "    print( \"\\t xgb_mean:{:.5f}\".format(xgbcv.loc[num_round-1, \"test-auc-mean\"]))\n",
    "    print(\"\\t xgb_std: {}\" .format((xgbcv.loc[num_round-1, \"test-auc-std\"])**2)) #同样不规定显示方式"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "a17b5f5a",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RFC(n_estimators=200 , random_state=1412,class_weight={0:0.5,1:2})\n",
    "gbdc = GBC(n_estimators=200, random_state=1412)\n",
    "param = { \"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03}"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fdc64af1",
   "metadata": {},
   "source": [
    "### 树的数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "id": "0fd9179f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "25\n",
      "\t rf:0.92068\n",
      "\t gbd:0.92294\n",
      "\t xgb:0.93432\n",
      "50\n",
      "\t rf:0.92558\n",
      "\t gbd:0.92930\n",
      "\t xgb:0.93619\n",
      "100\n",
      "\t rf:0.92785\n",
      "\t gbd:0.93333\n",
      "\t xgb:0.93625\n",
      "200\n",
      "\t rf:0.92893\n",
      "\t gbd:0.93512\n",
      "\t xgb:0.93526\n"
     ]
    }
   ],
   "source": [
    "for num_round in [ 25,50,100, 200]:\n",
    "    cv = KFold(n_splits=5,shuffle=True ,random_state=1412)\n",
    "    rf = RFC(n_estimators=num_round,random_state=1412,class_weight={0:0.5,1:2})\n",
    "    gbdc = GBC(n_estimators=num_round,random_state=1412)\n",
    "    param = { \"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03}\n",
    "    rfcv = cross_val_score(rf,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    gbdcv = cross_val_score(gbdc ,Xtrain,Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    xgbcv = xgb.cv(param, dtrain,num_boost_round=num_round,nfold=5, seed=1412,shuffle=True)\n",
    "    print( num_round)\n",
    "    print(\"\\t rf:{:.5f}\".format( rfcv .mean()))\n",
    "    print(\"\\t gbd:{:.5f}\".format(gbdcv .mean()))\n",
    "    print(\"\\t xgb:{:.5f}\".format(xgbcv.loc[ num_round-1, \"test-auc-mean\"]))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2caaa880",
   "metadata": {},
   "source": [
    "xgboost 100左右最好"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "47bcc626",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "50 xgb:0.93619\n",
      "55 xgb:0.93624\n",
      "60 xgb:0.93627\n",
      "65 xgb:0.93635\n",
      "70 xgb:0.93638\n",
      "75 xgb:0.93633\n",
      "80 xgb:0.93633\n",
      "85 xgb:0.93633\n",
      "90 xgb:0.93633\n",
      "95 xgb:0.93628\n",
      "100 xgb:0.93625\n",
      "105 xgb:0.93623\n",
      "110 xgb:0.93621\n",
      "115 xgb:0.93611\n",
      "120 xgb:0.93607\n",
      "125 xgb:0.93606\n",
      "130 xgb:0.93610\n",
      "135 xgb:0.93608\n",
      "140 xgb:0.93605\n",
      "145 xgb:0.93597\n"
     ]
    }
   ],
   "source": [
    "for num_round in range( 50,150,5):\n",
    "    param = { \"objective\" : 'binary:logistic',\"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03}\n",
    "    xgbcv = xgb.cv(param, dtrain,num_boost_round=num_round,nfold=5,seed=1412,shuffle=True)\n",
    "    test_auc = xgbcv.loc[ num_round-1,\"test-auc-mean\"]\n",
    "    print( num_round ,\"xgb:{:.5f}\".format(test_auc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "53f1afa9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(xgbcv.index,xgbcv[ \"test-auc-mean\" ] , c=\"#dC2624\",label=\"test\")\n",
    "plt.plot(xgbcv.index,xgbcv[ \"test-auc-mean\" ]+xgbcv[\"test-auc-std\"]*5, c=\"pink\",linestyle=\"dotted\")\n",
    "plt.plot(xgbcv.index ,xgbcv[ \"test-auc-mean\" ]-xgbcv[ \"test-auc-std\"]*5,c=\"pink\" ,linestyle=\"dotted\")\n",
    "sns.set(style=\"whitegrid\" ,font=\"simhei\" , font_scale=1.1)\n",
    "plt.legend()\n",
    "plt.ylim( (0.935,0.937))\n",
    "plt.xlim((20,150))\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "841980bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "300\n",
      "\t rf:0.92919\n",
      "\t gbd:0.93603\n",
      "400\n",
      "\t rf:0.92940\n",
      "\t gbd:0.93636\n",
      "500\n",
      "\t rf:0.92946\n",
      "\t gbd:0.93653\n",
      "1000\n",
      "\t rf:0.92959\n",
      "\t gbd:0.93664\n"
     ]
    }
   ],
   "source": [
    "for num_round in [300,400, 500, 1000]:\n",
    "    cv = KFold(n_splits=5,shuffle=True,random_state=1412)\n",
    "    rf = RFC(n_estimators=num_round ,random_state=1412,class_weight={0:0.5,1:2})\n",
    "    gbdc = GBC(n_estimators=num_round ,random_state=1412)\n",
    "    rfcv = cross_val_score(rf,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    gbdcv = cross_val_score(gbdc,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    print(num_round)\n",
    "    print(\"\\t rf:{:.5f}\".format(rfcv.mean()))\n",
    "    print(\"\\t gbd:{:.5f}\".format(gbdcv.mean()))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9f2b4cc",
   "metadata": {},
   "source": [
    "森林暂定1000 GBDT暂定200"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9f635fc",
   "metadata": {},
   "source": [
    "### 学习率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "id": "713c1f83",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.05\n",
      "\t gbd :0.93331\n",
      "\t xgb:0.92417\n",
      "0.1\n",
      "\t gbd :0.93512\n",
      "\t xgb:0.93437\n",
      "0.3\n",
      "\t gbd :0.93577\n",
      "\t xgb:0.93638\n",
      "0.5\n",
      "\t gbd :0.93439\n",
      "\t xgb:0.93497\n"
     ]
    }
   ],
   "source": [
    "for lr in [0.05,0.1,0.3,0.5]:\n",
    "    cv = KFold(n_splits=5,shuffle=True, random_state=1412)\n",
    "    gbdc = GBC(n_estimators=200,learning_rate=lr,random_state=1412)\n",
    "    param = {\"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03, \"eta\" : lr}\n",
    "    gbdcv = cross_val_score(gbdc ,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    xgbcv = xgb.cv(param,dtrain,num_boost_round=70,nfold=5, seed=1412,shuffle=True)\n",
    "    test_auc = xgbcv.loc[69, \"test-auc-mean\"]\n",
    "    print(lr)\n",
    "    print(\"\\t gbd :{:.5f}\".format(gbdcv.mean()))\n",
    "    print(\"\\t xgb:{:.5f}\".format(test_auc ))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "id": "d21ee484",
   "metadata": {},
   "outputs": [],
   "source": [
    "gbdc_result = []\n",
    "xgb_result = []\n",
    "for lr in np.linspace(0.25,0.35,10):\n",
    "    cv = KFold(n_splits=5, shuffle=True, random_state=1412)\n",
    "    gbdc = GBC(n_estimators=200,learning_rate=lr, random_state=1412)\n",
    "    param = {\"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03, \"eta\" : lr}\n",
    "    gbdcv = cross_val_score(gbdc ,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    xgbcv = xgb.cv(param,dtrain,num_boost_round=70,nfold=5, seed=1412,shuffle=True)\n",
    "    test_auc = xgbcv.loc[69, \"test-auc-mean\"]\n",
    "    gbdc_result.append(gbdcv.mean())\n",
    "    xgb_result.append(test_auc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "id": "5a501c36",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GBDC最高分是0.93635，最高分对应的学习率是0.2611111111111111\n",
      "XGB最高分是0.93673，最高分对应的学习率是0.29444444444444445\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABN0AAAHFCAYAAADG74/aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAADA2UlEQVR4nOzdd3RU1d7G8e+Zkpn0Tggd4YKhiIgUG4qiiIoFUEBFioqNYr+2a7kW7Iq90EUBQcCGBZWr8ipVkA5KDyWQXieZct4/kgwZEiBBICE8n7WyMjlt9pmdBPLMb+9tmKZpIiIiIiIiIiIiIkeNpbobICIiIiIiIiIiUtsodBMRERERERERETnKFLqJiIiIiIiIiIgcZQrdREREREREREREjjKFbiIiIiIiIiIiIkeZQjcREREREREREZGjTKGbiIiIiIiIiIjIUabQTURERERERERE5ChT6CYiIiIiIiIiInKUKXQTEREROcl4vV7mzp170P1jx47lyy+/xDTN49iqmulEf62ysrJITk4mLS0tYPuePXtYsWIFmzZtqqaWiYiI1H4K3URERERqqQkTJjB58uSAbR6PhxtuuIF77rmHsWPHljvH5XLx4Ycfcv/993PXXXcdr6YesU8//ZSRI0eyfv36f3Sd2vpaffDBB1x00UU8++yzAds/++wz+vXrx4svvnhE133sscf46KOPyM3NrXD/66+/zsCBA3nmmWeO6PoiIiK1ga26GyAiIiIiR9///d//8fzzzwOQmZnJyJEjAbDZbFx44YUsX76c1157jY4dO9KuXTv/edOmTSMzM5Pg4GBGjRp12OeZOHEi7777Lna7HbvdjtVqxTCMKrW1d+/e3HHHHVU6p9TixYv57rvvqFOnDo899tgRXaM2v1YOhwOA6OjogO1OpzPgc1WkpKQwa9YsvF4vwcHB9O3bt9wxNpuNxYsXExERAcDSpUt59913efDBB2nZsmWVn1NEROREpNBNRETkJJCSksKbb77Jzz//TGZmJvXq1ePqq6/m5ptvJigoyH/crFmzePjhh8udHx4eTosWLbjuuuu4+uqrK3wOr9fLlClTmDlzJtu3byc0NJRzzz2XkSNH0qBBg2N1a9Vm9uzZPPTQQ8TGxjJ//nx/uAFgmiZXXHEFf//9N/fccw+33357wLnHoz/OOeccnnzySZ566inefvttwsPDGTJkCAC33norv/76K4sXL+aRRx7hq6++wjAMcnNz+fDDDwF4+umnKxWOFBUVkZeXR1BQEHa7HcMwsFqthz0PICcnh8LCQiyWigdf/P333/z+++84nU7/tQ8UEhICwDfffEPbtm3L7TdNE4/HQ2FhIdHR0Vx22WXljqkNr9XBBAcHA/jDr1Kl3692u71K1wP45JNP8Hq93HDDDRUGbrA/5EtMTAQgNzeX//u//+OOO+5g5syZxMTEVPl5RURETjQK3URERGq57du3079/f9LS0ggJCaFOnTps27aN119/nT/++IP333+/3B/ydrudZs2a+b/eu3cvy5YtY9myZaxevbpcRZHb7eb2229nwYIFGIZBo0aNyMrK4vPPP+fnn39m8uTJta665corr+T9999ny5YtfPbZZ1x//fX+ffPnz+fvv/8mOjqagQMHBpx3PPqj1IABA0hJSeHdd99lz549/u2GYfDEE09w55138sQTT/jDrA8//JDU1FQuvfRSevXqVanXYdiwYQwbNqxSxx7o/vvv58svvywXCJVas2ZNpYcnpqam8uCDDx7ymE6dOlUYusGJ/1odTOn3UlXDuoPJyMjgo48+on79+tx3330HPa407CsN9y644AKGDBnCxx9/zE8//XTQsE5ERKQ2UegmIiJSy91zzz2kpaVx8cUX88ILLxAaGsqmTZsYMmQIv/zyCzNnzuS6664LOKdOnTp8/vnnAdtmzpzJo48+ykcffcTll19O+/bt/fteffVVFixYQJ06dXj//fdp1aoVXq+Xl19+mfHjx3P//ffzxRdfVHkoXU1mtVoZPnw49913HxMmTKB///7+YGPcuHFAcZVUaGhowHnHoz/KGjlyJK1ateKSSy4J2N68eXPmzp2LzVb838Hdu3czceJEoqKiePzxx4/oNSkqKgqo1KvM8bC/Wu1A3bp149tvvyUkJMT/UbYybMKECfz666+MGjUqYNhnWW63m6KiInJzc/F4PIdsz4n8Wm3dupXU1NRy23fu3AnArl27WLp0qX/7jh07gOIQrez2UhaLhTPOOKPc9vfff5+8vDxefPFFQkNDKSgo4M033+TWW28tN4T1QPfccw99+/aladOmrF69moSEBOLj4w95joiIyIlMoZuIiEgt9vPPP7N69WpCQ0MZPXq0PwBq1qwZt99+O0899RTTpk0rF/JUpG/fvsyePZulS5fyww8/+EOelJQUPvroIwCeeeYZWrVqBRSHUvfddx9ff/01Gzdu5Pfff+fss88+RndaPS677DLee+89/vrrL7777jt69uzJn3/+ydKlS4mLiwuofoPj0x8A559/fkC1VlW4XK5y/WQYBmvWrDnkUMgffviBJ598kgceeICrrrqqUs/ldruB/VVRB4qIiGDjxo1MmzaNu+++O+D5d+/ezTvvvENBQQFr166lXbt2/P333wQHB1O/fn3/cT6fj1GjRtG1a1duuummcs9RW16r8ePHM3369IOeP2vWLGbNmlVu+4IFC1iwYEG57aGhofzxxx8B29auXctHH31Et27d6N69OwCff/4548aNY/bs2cydO7dc8OZ2u0lPT2fDhg1s2LCBP/74g0WLFpGZmclTTz1F//79D33jIiIiJzCFbiIiIrXYDz/8AEDXrl0JDw8P2HfOOecAsH79+kpX3ZTOw5Sfn+/f9t133+F2u2nQoAHnn39+wPE2m43OnTvzxRdfsGTJkloXulksFoYPH86oUaMYO3YsPXv29M/zNWzYsHIByfHoD9hfDdWwYUN/ddaR2rJlCw6H47Bzj02dOpV9+/bx4IMPMnPmTJ588smAIbEVKa3eKjsfXlm5ubk88sgjbNu2jV9++YV33nmHpk2bUlhYyN13343H42HcuHF07tyZgoIC7r77bnbt2sXTTz/N5ZdfTkZGBqNGjWLRokVs2LCBrl270qRJk4DnqC2vVen2rl27ctttt/m3z507l48//pjevXvTp08f//Z58+YxceJEzj333ICFGVavXs3o0aPLPU9aWhqjRo3C6XTy5JNP+tv0wQcfAPDcc88RERHB9u3b2bhxI//73/8A+Pjjj5k0aZL/OrGxsTRt2pTGjRv753sTERGprRS6iYiI1GLLly8H8FeflVWnTh06deoEFIc2hwt53G43a9euBaBx48b+7UuWLAGgQ4cOFZ5Xt25doLgirjbq0aMHSUlJrF69mmnTpvHjjz+SkJBQYQXP8eiPsiZOnPiPF7Fo2bIlpmke9rgPP/yQqVOn8uqrr7J48WKuuuoq7rzzToYNG3bQMKs0SDrYvYaFhTFr1iz+85//MHfuXJ588klGjRrF888/z9q1a3n11Vc55ZRT2Lt3L48++ih//fUX559/Pl26dGHbtm3cdNNN7Nmzh4suuojnn3/+kPOhneivVel5sbGxnHnmmf7tf/75JwD16tUL2L5+/XqgeMGDsttLn6dscGiaJoMHD2b79u2ceeaZzJgxA5fLxdatW9m5cyf9+vWjXbt2tGnTBp/PF9CuhIQErr32Wlq1akWbNm2IjY097OsjIiJSWyh0ExERqaV8Ph/btm0Div/gPlBwcLB/WOihmKbJjh07eP3110lOTiY6OjpgxcxNmzYB0KhRowrPv+2227jhhhtwOp1HcBfFrrrqKtavX8+UKVPo2LFjufZ1796d5ORkvvrqK/71r3/59+3bt4+33nqLX3/9lb179xIREUGzZs0YMmQIF1544RG3pyzDMBgxYgR33nknTz31FD6fj9tvv71cpdDx6g+AgoKCI7+hChQWFuLz+Q45Gb/FYuGGG27goosu4vHHH+fnn39mzJgxzJ8/nzfeeKPCqqbSIZOHChjDwsJ49dVXadWqFddddx3ff/+9P0gaMWJEwLFXXHEFL774IlarlejoaNq1a0ePHj146KGHDtr22vJaHe35Esu23zAM2rRpw8aNG1m6dClLly4lJCSE/Px86tSpw4MPPkhYWBhnn302TZs25cwzzyQyMpLBgwfTokWLgEq6srKysnC5XCQkJBzVtouIiNQUCt1ERERqqdzcXH/VSlVXPNy5c2eFq4126tSJp59+mqioKP+20snbDzaJelhYGGFhYVV6/gNdc801jB49mtmzZ5cL3ZYsWUJycjKtW7cOCNzS09O59tpr2b17Nw6HgwYNGlBQUMDixYtZvHgxjz76aIVzfB2Jiy66iDZt2rB69Wrq1atX4cqMx6s/oHhl1dzcXMLCwti9ezdXX301drudoKAg7HZ7pQKaDz/8kIYNGzJq1CiAwwZJperWrcsHH3zApEmTeOmll0hLSzto/x9uyGQpwzC49dZbgeLhk+3bt6d9+/Y0b96czz77jGXLltGrVy9efPFF3G43VqsVi8XCK6+8gmmah2x3bXmtjtbqpAdz/fXX07ZtW84880waN27M1KlTGT16NP/5z3/8bS5dQASKA2+AzMxM/7a9e/eyfv16lixZwm+//cbatWsZNmwY99xzzzFtu4iISHVR6CYiIlJLla3gsdvt/sd33XUXycnJAcd+8MEHAdUmdrvdP8eU2+1m165dFBQUsHv3btatWxcwL1bpfGKHC07+iV69evHSSy/x7bff8vjjjwdUzc2ePRuA3r17B5zz5Zdfsnv3bk477TTGjRvnD7rmzZvH8OHDGTdu3FEL3WD/3GAHm9PrePUHwL333ut/nJeXR15eHg6HA5/PR1FRUYUBTXZ2dkAbS0OeO++887D3XpFBgwaRlJSE0+ksN39dqdLqrcp876xbt4558+YxcuRIpk2bBhSvmrts2TKuu+46nnrqKb744gteeOEFXn/9dTp37sw777zD999/zwsvvECbNm0qvG5tfK2OhbZt29K2bVugOGh/66236NatW7mVXqE4YN68eTMAGzduZPDgwWzYsIH09HT/McHBwbRt21bzuomISK2m0E1EROQkUHaepU2bNrFly5aA/aV/0JeqU6cOn3/+uf/roqIiZs+ezXPPPcfdd9+N1+vliiuuOOhzHG2xsbGcd955zJ8/n3nz5tGrVy+gOMj67rvvsNvtXH755QHnlC5i0KZNm4DKsu7duzN58uSjOhzv999/Z/HixUDxZPpffvlluSGfZR2P/ihVv359Vq9efdC25OTk8PbbbzNlyhQAoqKi6NWr11EZ8lc6R10pn8/Hnj17/MNrDzdPWekxEyZM4M0338RutzNkyBAMw+CZZ55hzpw5jBo1yh92xcbGkpGRwf33388XX3yBx+Nh06ZN9OvXjzvuuIM77rjjkIscnOivFRSH0KVBdFlvvfUWb731VrntX375JV9++WWV2vqf//wHr9fLE088EbD95ptv5u+//yYlJcU/t11eXh5btmyhXbt2tGzZklNPPZWWLVvSpEmTY16dJyIiUt0UuomIiNRSoaGh/sdlV7f89ttv/Y8vvPBCdu7cedhrBQUF0a9fP/bs2cM777zDyy+/7A95QkNDyczMLLeCZqlPPvmEmTNncsEFFzBy5MgjvR169+7N/PnzmTNnjj90+/7778nLy+OSSy4pN7y1e/fuvPbaa8yYMYOQkBA6duxIs2bNaNCgAZ07dz7idlRkzJgxAAwcOJCPPvqIt99+myuuuCJgUvzj1R+VZZomM2fO5LXXXiMtLQ2bzcbQoUO58847D1ptdaRyc3OZOXMmU6ZMoXPnzjz77LPA4au3vvnmG1555RV27NhBu3btGD16ND/88AMvv/wyqampnHLKKWzevJmhQ4eSlpbmr6Tau3cvTz75JGPGjKFz587ce++9vPnmm6xevZr33nuvyu0/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JDMzk3379vkXm5TyfD4fNpuNXbt21fjQDSAqKoq6detiGMY/vpZCNxERERERERGRKtqzZw+ZmZlEREQQERGBzWY7KkFNbeP1eiksLMThcBzVKrKjzTRN8vPz2bt3LwCJiYn/+JoK3UREREREREREqsDr9ZKVlUV8fDxxcXHV3ZwarbQK0Ol01ujQDSA4OBiAvXv3UqdOnX/c3ppf1yciIiIiIiIiUoO43W5M0yQ0NLS6myJHWUhICFDcx/+UQjcRERERERERkSOg4aS1z9HsU4VuIiIiIiIiIiIiR5lCNxERERERERERkaNMoZuIiIiIiIiIiFTahRdeyJtvvlmlc2bPnk3Lli2PUYtqJoVuIiIiIiIiIiIiR5lCNxERERERERERkaNMoZuIiIiIiIiIiMhRZqvuBoiIiIiIiIiI1BamaZLvMau7GQCE2AwMwziic3Nzc3nqqaeYP38+0dHR9OvXj++//57w8HAAsrKyuP322/ntt9+oX78+Dz30EOeff77//JUrV/Lkk0/y119/0bp1a84555yA65umydixY/n444/Jysri1FNP5cEHH6R9+/ZHfsM1jEI3EREREREREZGjwDRNzvtuB7/tc1V3UwA4J97JLz0aHlHw9uKLL7Js2TJee+01Nm3axOjRoxk9ejSnnnoqw4cPZ+rUqfTr14/33nuP6dOnM3z4cL799lvq169Pbm4ut912G82bN+ftt99m6dKlvPfeewHXf/3115k4cSL33HMPrVq1Ytq0adxyyy18/fXX1K1b92i9BNVKoZuIiIiIiIiIyFFyZHVlNc/y5cvp2bMn5513Hueddx4ffPABqamptGrVCoAWLVrw+OOPA9ChQwe6du3K1KlTuf/++/nyyy/JysrilVdeITY2lg4dOrBp0yZ++OEHAPLy8pgwYQLDhg1j8ODBAJx66qk89thjJCcnK3QTEREREREREZH9DMPglx4Na8Xw0qSkJJYsWUJmZiabNm0iIyODZs2a+fd37NjR/9jhcNCiRQu2bdsGwNatW0lMTKROnTp4vV4AzjzzTH/otmnTJgoLCwOuERERwRtvvHFEba2pFLqJiIiIiIiIiBwlhmEQaj/x6926dOnC999/T+fOnTEMg/79+3PRRRf591ssgWtzWq1Wf8Dm8/mwWq0B+8seb5oVh5Jr164lNDSUxo0bH63bqFZavVRE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1NRUa5/Dhw9X69atFRcXp7Zt2yopKUnPPvusAgMDJZ1/bc7IyLA+9+7cuVOvvfaaunTpIofDcTnLdnvVXdeamkFc8XsfACrn5eVV6ZsCh8Ph8uVD2dnZSk5O1tChQ63Trm+55RatX7/eKUW+9tprFR8fry+//FJBQUHy8vKq8ELl5eVl7b+yYyx/AuMSp4qqu6Z79uzRnj171L17d6WkpMjDw0N5eXm699579fzzzys1NdWWdcBZddf1l3788Udt2rRJy5cvv+Ac//jHP/TBBx/o5ZdfrvSN5rFjxzRr1izFxsbq5ptvdun4aorqrmlpaakmT56sxo0bKz4+Xh4eHlq+fLlGjRqlFStWOF36fdVVVykqKkqHDx/W66+/rj59+jidOSVJERERysvL04cffqjNmzerT58+l7Fq91bdNb333nu1ZcsWTZ06Vc8995yKiopUVlamhx56yHpdzMjI0IEDB/Tmm29WOu/PP/+s2bNna8qUKRVqjMrZWdf27dursLBQO3bs0M6dO9W+fftLzm+M0ZIlS3TjjTdalyBGR0crNjZWGRkZmjRpktavX6+TJ09q8uTJ1mVS27ZtU3x8vFatWqUHHnjA9YW7sequaVWsXr1afn5+Wrt2ra6//noZY/TEE08oJSVFAwcOdPqj18aNG3Xy5EndeeedLh1bTfNb1tUYoylTpqh+/fpOlyb+0sqVK3X77bc7fXA/fPiwnn76acXExOjOO+/UTz/9pNTUVM2YMUMzZsxw6Rhrgt+ypi1atFBUVJTWrl2rVatWaerUqZKkVatWaefOnRo7dqwCAwP18ccfW7WPjo7WxIkTtXfvXvXv319XXnmlCgoKJImQ/CKqu641NYPglJY/qPr166u4uFhFRUVO7QUFBZe8t8QvnTlzRhMnTtT111/vdK+Jq666qsJpm+UfwPfv328dww8//OC0zfHjx63rq+vXr1/hFM7yJzNXjrGmqO6alp9y+8ADD1hntDVq1EjdunXTvn37fvXxo3LVXddfevvtt9WwYcMLXhaak5OjmTNnqn///uratWuF/vI3oh4eHpo2bVqVj62mqe6abt68WXv27NGyZct07733qm/fvnr11Vf1/fff64033nCaw9/fX2PGjNH69etVVlamefPmVdjPnXfeqRdffFHDhg3TtGnTdPLkSZfWWxNUd029vLz00ksvafXq1Zo8ebKaN2+uq666yrqErfw+bdOmTbvgJS3Tp09XmzZtuJTJBXbVVZIGDx6sFStWqEuXLnryySerNH+tWrXUqlUrp305HA6Fh4db76Wys7Pl6+urQYMGWdtER0eradOm1jb4t+quaVV8++236t27txWqe3h4aMCAASorK7OuHCj3xhtvqFu3btZ7Y1Tut6xrenq6tm/frmeffbbS+xfn5+fro48+0u233+7UvnTpUjVq1EgLFy7U7bffruHDh+vFF1/U6tWr9c0337h0jDXBb1nTiIgITZ8+XQsWLNDKlSv1ySef6OzZs3rhhRc0YcIEjR8/Xr169dKMGTN09913W++VmjRporfeeksvvviiHn30UXl5ealdu3aKjo6+7HW7u+qua03NIAjd/qBCQkLkcDi0a9cuq62oqEjZ2dm65pprqjzPzJkzlZWVpXnz5jnd8+nbb7+17jdTrvya9/IbeoeHhzvtXzp/48Py/YeHh+urr75SYWGh1b9nzx5JcukYa4rqrmn5k8x/niFV2SnCsE911/WX3nnnnQves+vUqVMaN26cAgICNGXKlErHv/zyy/rggw/03HPPcS+Li6jummZnZ6tevXpOZ0vUqVNHTZs2VU5OjqTzZz2dOHHC6vf19VVUVJR1ydrp06crvCHp1q2bTp48qSNHjri24Brgt3qctm7dWjfffLO++eYbjR492jqL4qOPPtKJEyeUkJCgoKAgBQUFafLkyTp8+LCCgoKUnJysd999V5s3b7b6y++nMnToUHXr1u1X/gbc06+ta1FRkX788UentpiYGOXm5ur06dOXnL+oqMi6sfMvHT9+3LpptK+vrxo1alThdbh27dpc3lSJ6q5pVdSpU6fS91KSnGpWVFSk//u//1NsbGyV5q3Jfqu6fvrpp5o7d67Gjx9/wbP533vvPdWtW9fpi4ik85+NWrRo4XQGTXBwsCRZr834t+qu6blz5yr83jt16iSHw6GsrCwdO3ZMBQUFFe7lFxwc7DTO4XAoJiZGnp6eKi0t1cSJEy9nuTVGdde1pmYQhG5/UH5+furQoYMWL15sfQvHq6++KmOMoqKiqjRHamqq/v73vyspKcm6OXe59PR0zZo1y6lt7dq1ks7/Q5ak2NhYbd682Xpg5ObmatOmTdYpv9HR0fL19dXSpUslnT+LZsWKFQoMDLzo/aZqququaWhoqGrVquV0VpsxRp9++qlVU9ivuutaLi8vT5999lmlH77PnTunhx9+WN9//72Sk5OtDwe/9Oabb2revHmaOHGiIiMjXVhhzVPdNa1Xr56OHj2q3Nxcqy0vL08HDhywLiscO3asnn/+eadx33zzjfWFGOvXr1e/fv2c/hL5zTffyOFwcGliJX6rx2n5dtdee63i4uKstm7dumndunVOPwkJCWrYsKHWrVungQMHVuhft26dJGnWrFncHuACfm1dFy1apAcffFBnz5612r755hs1bNhQXl5el5w/KytLI0eOdPqAl5OTo507d6p169aSpLCwMB05csTpZt4//fSTvvnmG16bK1HdNa2KsLCwClcIbN++XQ6HQyEhIVbbBx98IGMMX6BQBb9FXbOysjRu3Dh17tz5gt8OLZ2/JLhz58664grnuyzVq1dPe/fuddrHli1bJInX1UpUd01zcnLUo0cP6x5g0vnPoqWlpWrSpImuvvpqeXh46PPPP3ead8uWLRXqde7cOaWmpuq2225TWFjYr1m226vuutbUDIJ7uv2BJSQkaNCgQRo4cKACAgL03nvvKS4uTv7+/jp27Jhyc3MVEhJS6X2bdu7cqb/97W/q2bOnmjRp4vQVv6Ghobr//vt133336fHHH1dkZKT27dunlStXqlevXtZf13v06KGQkBANGTJEMTEx+vDDD1W/fn31799f0vm/HEyYMEEzZ87Ul19+qfz8fO3evVspKSm/zS/ov1B11rRhw4bq27evnnrqKSUmJqphw4Zas2aNDh48yM3Vq1l11rXctm3b5OnpWemHtNTUVH3wwQd6+OGHVVhYaM1Rp04d3XjjjcrOztaUKVMUFhamW265xWkf5fdOgLPqrGmHDh3k7e2toUOH6tZbb9XZs2f17rvvqnbt2rrjjjskSSNGjNCECROsNz9btmzR559/rmXLlkmSevXqpYULF2rUqFEaM2aMCgsL9dxzz6lfv37WN33B2W/xOP3222+1du1aPfvss06Pq6uvvlpXX32105z79++Xl5eXdSbFL78d9ZduuOEGtWjR4tcs3a39mrr269dPr7zyisaPH6+4uDgdOnRI6enpeuihh6wzii82v7+/v8LCwjRmzBgNGjRIZ86c0bJly+Tr66thw4ZJknr27Knk5GT9+c9/1pgxY3T27FmlpKSoXr163AfsAqq7ppfywAMPKD4+Xs8995w6deqk/fv3a/78+Ro4cKDTzb0//vhjtWzZstI/dKGi6qxraWmpEhISJJ0/O7j8rBdJuu6661SvXj1J58+k2blzpyZPnlxhH927d9cbb7yhwYMHKzIyUj/99JM2bNigyMjICpfD4bzqrGn5F4IlJCQoMTFR9erV0/z58xUcHKyoqCg5HA517txZL730kr777jtdc801+uyzz/Tpp5/q6aefdtrX2rVrdfjwYS1evPi3+tX8V6vOutbYDMLgD+3AgQPmz3/+s7nnnnvMokWLzNmzZ40xxrz++usmMDDQFBQUVDpu5syZJjAwsNKfclu2bDF33HGHadmypenZs6dZunSpNX+5kydPmmeffdbcfffd5v/9v/9njhw5UmFf7733nhk8eLAZNGiQ2bRpk42rd0/VWdPS0lKTnJxsevToYUJDQ81tt91m/vnPf1Y6X0xMjHnhhRcueJwvvPCCiYmJ+RUrrVmqs67GGDNp0iRzzz33VDrHnXfeWen4IUOGGGOMWbp06QX3kZOTY+Nvwb1UZ00zMzPN8OHDTbt27UyrVq3MfffdZ3bu3Ok0z9q1a02vXr1MeHi4ue+++8zHH3/s1P/111+bBx54wLRp08Z07drVJCcnmzNnztj8W3Av1f04TUhIMP3796/Ssbz++uuXfI4NDAw027dvr9J8Ndnl1tUYY3bv3m3uv/9+07p1a3PrrbeaFStWVHl+Y4z58ccfTUJCgmndurWJjIw0iYmJ5ocffnAaf/ToUTNp0iTTvn1707p1azNkyBDz1Vdf2bR691TdNTXGmO3bt1/wdfDDDz80gwYNMq1btzbR0dFm1qxZ5vTp007bxMTEmKSkpF+xypqnuuq6d+/eCz5Hv/7669Z2O3bsMIGBgebAgQOV7uPNN98099xzj2ndurVp27ateeihhyo8nuGsOh+rhYWF5sknnzRRUVEmMjLSPPbYY+ann35y6p85c6bp3r27admypenSpYtZuHCh0xwlJSWmS5cuZs6cOTau2v1VZ11rYgbhYYwxv3fwBwAAAAAAALgT7ukGAAAAAAAA2IzQDQAAAAAAALAZoRsAAAAAAABgM0I3AAAAAAAAwGaEbgAAAAAAAIDNCN0AAAAAAAAAmxG6AQAAAAAAADYjdAMAAAAAAABsRugGAAAAAAAA2IzQDQAAAAAAALDZ/wc3vX5smLwBDgAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "lr_range = np .linspace(0.25,0.35,10)\n",
    "plt.figure(figsize=(15,5),dpi=100)\n",
    "plt.plot(lr_range,gbdc_result,c=\"#01a2d9\" ,label=\"gbdc\")\n",
    "plt.plot(lr_range,xgb_result,c=\"#dc2624\",label=\"xgboost\")\n",
    "print(\"GBDC最高分是{:.5f}，最高分对应的学习率是{}\".format(max(gbdc_result), lr_range[gbdc_result.index(max(gbdc_result))]))\n",
    "print(\"XGB最高分是{:.5f}，最高分对应的学习率是{}\" .format(max(xgb_result),lr_range[xgb_result.index(max(xgb_result))]))\n",
    "sns.set(style=\"whitegrid\" , font=\"simhei\", font_scale=1.1)\n",
    "plt.title(\"GBC vs XGB学习率学习曲线\" , fontsize=18)\n",
    "plt.legend()\n",
    "plt.xticks(lr_range)\n",
    "plt.ylim((0.9340,0.9370))\n",
    "plt.show( )"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "02993bab",
   "metadata": {},
   "source": [
    "学习率： GBDC 0.26166  XGB 0.2416"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "id": "46303b67",
   "metadata": {},
   "outputs": [],
   "source": [
    "gbdc_result = []\n",
    "for num_round in [25,50,100,150,200,250]:#确定学习率后再次调整树的个数\n",
    "    cv = KFold(n_splits=5,shuffle=True,random_state=1412)\n",
    "    gbdc = GBC(n_estimators=num_round ,random_state=1412)\n",
    "    gbdcv = cross_val_score(gbdc,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    gbdc_result.append(gbdcv .mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "id": "c411dcf4",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GBDC最高分是 0.93573，最高分对应的树数量是250\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABNUAAAHFCAYAAADVOM8uAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACG/UlEQVR4nOzdeXxU1f3/8ffMZGaykg0CYY2CBAJIASsoCoKtgFqxlB8ggkhUUCEsAi5frbtFCyoooCJRwL1QsFWpYhWlCigiCkLYIgmEHbLvk5n7+yNkZEgCmbBMJryejwePJPfec+fcTA6aN+ecj8kwDEMAAAAAAAAAaszs6w4AAAAAAAAA/oZQDQAAAAAAAPASoRoAAAAAAADgJUI1AAAAAAAAwEuEagAAAAAAAICXCNUAAAAAAAAALxGqAQAAAAAAAF4iVAMAAAAAAAC8RKgGAAAAAAAAeIlQDQAAAGfNrl27tHXr1irPHTt2TA899JAOHDhwnntVM4ZhKCMjQxkZGSotLfU499NPP+mnn35SQUGBj3oHAADqGkI1AAAASYcOHVKnTp107bXX1qr9mDFj1KlTJ6WkpFR5vqCgQF9//bX761deeUUJCQl66623JEk5OTn68MMPPcKcYcOG6cUXX9TRo0e96suhQ4eUmppaqz9paWmnvf/+/fs1adIkHTp0yOP4559/rj//+c+69957lZWVVandP//5Ty1btkx//OMf9fPPP3v1TOdDSUmJrr32Wl177bXKyMjwOHfLLbdo6NCh+vXXX72+77Zt23T33Xdr8+bNVZ4/fPiwBg0apLvvvlsbNmyoVd8BAMD5F+DrDgAAANQFdrtdpaWliomJqVV7p9Op0tJS2Wy2Ks9PmTJF//vf/zRv3jz17t1bFotFTqdTVqtVkrR8+XJNnz5d+fn5GjFihI4dO6aNGzcqJSVFd911l1d9eeaZZ/TZZ5/V6jmio6O1Zs2aU14zZcoU/fjjj9q0aZMWLVqkFi1aSJK6deumyMhIHThwQA899JBeffVVd5vi4mItXrxYknT99derc+fOp+1Lz549ZRiGrFarAgICZDZ7/+/By5cvV2hoaI2uPfG9i4yM9DgXGBiowsJCBQUFed2Hd999V6tWrVJGRobef//9Sv2Jjo7Wjh07tGXLFk2aNEmFhYVasGCBsrOz9eijj3r9egAA4PwgVAMAAOfdoUOH9PLLL+vrr79Wdna2mjZtqptvvll33HGHO9hYtmyZHnrooUptw8LC1LZtWw0ZMkQ333xzlfd3Op16++23tXTpUu3Zs0chISG66qqrNGHCBDVv3rzKNoGBgZJU4wDmZBXhWEBA1f979eijj+qWW27R1KlT9eGHH7qvs9lsKisr07vvvqumTZtqyJAhkqRffvlFktS7d2+v+1TxLB999JHatm1b43bdu3d3tz2VOXPmKDExUdu2bdMdd9yh9957T9HR0YqKitLf//53jRo1SqtWrdKKFSt0/fXXS5LeeustHTlyRO3atdOTTz5Zo/4UFBTIMAzZbDaZzWb3n9NxOp3KysqS1Wr16ntnNpsVGBio4uJihYeHe5yz2WwqLCx0v881lZOTo48++kjBwcF65ZVXquyPxWJRaGiosrKy1KRJE9lsNq1du1Y//vijmjZtqjvvvNOr1wQAAOcHoRoAADiv9uzZo2HDhunYsWMKDg5WTEyM0tPTNWvWLP3444967bXXPIITq9Wq1q1bu78+fPiwNmzYoA0bNuiXX37RI4884nF/h8Ohu+++W998841MJpNatmypnJwc/etf/9LXX3+txYsXKz4+vlK/TCaT+/Uq3HXXXUpLS5PFYvG49rrrrtN9993ncawiDDz52gpNmzbVM888o9dee00lJSXuUM1sNuvnn3/W0aNHNWnSJPd91q5dK6k8VPOW3W6XJP3pT3/yum10dHSNrpk/f74GDRokh8Oho0ePutv16NFDN954o8LCwtSnTx9JUmZmpl577TUFBAToueeeq1FwJ5XvY1Yb6enpuu666yoFYzVR8bNXm1lxVUlOTlZhYaH++te/umf0VSU4OFhZWVkKDAxUQECAXnzxRf3pT3/SihUrNGzYsFqHvQAA4NwhVAMAAOfV5MmTdezYMf3xj3/Uc889p5CQEKWmpmr06NFavXq1li5d6p6tJUkxMTH617/+5XGPpUuX6uGHH9Zbb72lG264QV26dHGfe+GFF/TNN98oJiZGr732mhISEuR0OjVz5ky98cYbmjp1qv7973+7Q7Ts7GxZrVb315JUVlamoqIiNWnSRC6Xyx2AHTt2TJs3b64ycDkxjCstLZXJZHIf++mnn/Tpp5/KarXqsssu0yeffOKeifbf//5X8fHxGjJkiPbt26dnnnlG06ZN0zfffCNJuuqqqyq9VmlpqUpLS6sNWlwul6TyfdtatWpV3VtRybBhw2QYRo2ubdy4sebOnasmTZqoSZMmHueee+45jxl7c+bMUV5enu655x61a9euxv2pcKpltdVdL5UHVdWd37RpU5XnKr53P/zwg8dxp9MpSdqyZYuOHDlSqV3z5s0rfR+OHDmit956Sx06dNDw4cMlSR9++KEiIyNPG5Y2adJE77zzjlq3bq3c3Fz9+OOP6tq16ynbAACA84tQDQAAnDdff/21fvnlF4WEhGj69OkKCQmRJLVu3Vp33323nnjiCb3//vseoVpVBg8erOXLl+uHH37Qf//7X3eodujQIffG/08//bQSEhIklc8emzJlij755BPt2LFDa9eu1ZVXXilJuuGGGzwKAXzxxRfq0KGDIiIi9N1333m87tKlS7V582Y1bdpUgwYN0r59+2S1WmU2m5WbmytJuvnmm5WXl6fXX39dvXr1kiT9+uuvevPNN6t8ls8//1yff/65x7GhQ4dq586dkuS+x8k6d+6sf/zjH1WeKysrq+Y7d3onV7080ZIlSyrNDPTGK6+8oldeecXj2L333quJEydW26asrEy33nqrWrRooQceeECNGzc+7etUPEN1M+Kys7N16623nvIe1Z2fPHlylccffPBBjR492uPYU089peLiYj3++OMym80qKyvTrFmzdODAAU2YMEHjxo2rdJ/CwkLt2bNH27dv19atW/Xdd98pJSVF0dHR7qAVAADUDYRqAADgvPnvf/8rqTwoCgsL8zjXs2dPSeWVEk8V7FSIioqSVB5CVPjss8/kcDjUvHnzSjOBAgIC1L17d/373//W+vXr3aFav379VFpaqszMTH3xxRdq0aKFrrzyyipno+3bt0+SFBcXp4SEBDVq1EgWi0UWi0VbtmzRvn371LlzZ5nNZkVERLjbXXvttfrkk09kt9t1+PBhjR07Vnl5eZKkxx57TFdeeaVCQkLkdDpVXFys//znP5KkLl26qFOnTu77/O9//9Pu3bv15z//+ZRLCYuKiiRJ99xzz2m/jyerbk84Se4QNDQ0VI0aNfL63ifKyspSdnZ2tbPJKmzYsEHbtm3Tpk2btGrVKk2cOFEjR46sdpmtVL4EWPptGezJTgzbZs+erYYNG7q/vuOOO1RcXKx33nnHo83dd9+tvLw8vfjiix7FLJ544gnt2LGj0ky6N998U5999plGjx6tSy+9VFJ59dMDBw6oS5cuGjNmjHJzc/Xrr78qJSXFHcpeffXV7lDUarWqRYsW6t27t1q1auX1jD0AAHBuEaoBAIDzZuPGjZLknkF2opiYGF1++eWSPIOyqjgcDm3dulWSPJY3rl+/XlJ5FcqqVCzPO3TokPtYRXXF999/X1988YXatm3r3kj/p59+0rx58zRjxgyFh4drz549kqT4+Hg9/fTTHvd+8MEHtXz5cj3xxBOViiGEh4crPDxcqampevDBB1VSUqIbb7xRH3/8sfLy8jRy5EjdeuutuvvuuyWVFxiQpIkTJ+qKK65w3+eOO+7Q7t27df/997tDxYrvx549exQYGKigoCA9++yzmj17tseS1poqKytTXl6eCgsLlZ+fr4suuqhSwPjHP/5Rzz77rNf3PtHLL7+sOXPmnHa5affu3fXRRx/pySef1Lfffqvp06fr3//+t6ZPn17l3njSbzPVqgugTgzkOnbs6PF+VTzrZZddVmWbDh06ePzMVSzBPTGM/M9//qPnnntOZrNZdrtdL774okpKStwFC/7+97/rueeec8+qPNH111+v7t27q0OHDmrTpo3XhREAAMD5Q6gGAADOC5fLpfT0dEnlm/afLCgoqMqQ4USGYWjv3r2aNWuWMjIyFBkZ6VEBNDU1VZLUsmXLKtuPHTtWt956a5XLAqvaY2vPnj36+uuv9eCDD+qVV17Rxo0b1axZM683wDcMQ0uXLtX06dNlGIZeffVV/frrr/r4448VFRWl3/3ud3rxxRfldDrVs2dP93OcGP5J5UUaAgICPGbBVVxXUWXzRKeazVWdir3DKvz444/uGWqnCztro7i4+LTXxMXF6Y033tDSpUv17LPPasuWLfrLX/6iBx54QCNHjqx0fUWoVt1MtbNVhKC6e3bq1Ekmk0kul0uvvvqqe8++0tJSPfjgg2rZsqW6dOmiffv26fLLL1fXrl21YMECrVy5UqNGjVLHjh0r3d8wDKWmpqpNmzZnve8AAKB2CNUAAMB5kZ+f7w47GjRoUON2+/btq3JG0uWXX66nnnrKI2Cq2BstMjKyynuFhoZWubm/y+XS119/Lal81tff//53TZ48WTfddJO+/vprffzxx3r99de1b98+3XjjjSorK9PLL7+sH3/88bRBYHFxscaNG6dvvvlGLVu21Jw5cxQfH68tW7a4X2/mzJkaNWqUvv/+e/dsO0navn27x70OHTqk2NjYSqFQ48aNtWLFClksFgUEBMhqtcpisdQqPDIMQ06nU2VlZSouLlZQUJD7XFxcnG699VZ17txZkvTkk0+6CzBYrdZTLh2tcM011+jBBx9Ujx49ZLFYPIpMnM7gwYPVo0cP3Xffffr555/dRQVOdrrln+ciVDtR8+bNdf/99+uSSy5RfHy8goOD1b9/f0VHR+u2226TVL6X3w033OBuU/Ezm5OTI6k8GExNTdXmzZu1Zs0arVu3Trm5ufrpp59YAgoAQB1BqAYAAM6Lin2+JM9KmePGjVNGRobHtfPnz/e4tnXr1pLKw5L9+/erqKhIBw4cUEpKiuLi4tzXVsykqi5Mqc6PP/7oDuR+/PFHrV69WoZh6IEHHtCjjz6qdevW6fnnn5dUXo0zICBAP/zwg3744Qd99dVXuuaaa6q9d2BgoJ5++mm99dZbuvfeexUaGqq1a9cqPT1dDzzwgK6++mrZ7XbNnz9fu3bt0i233KI2bdooJyfHXSFUkkpKSpSTk+Oxx1pV3yOpfA+3k7+n3vjf//5X5WzCyy67zGNZZFFRkQoKChQYGKiysrIqZ8a5XC6Papnt27eXJP3+97/X73//e6/71rx5c7399tv6xz/+oREjRlR5zemWf54PJxYteP7553X06FHNnTu30vfIMAzt2bNH+fn5kqQXX3xRzz77rH799VePghPNmjVTly5dlJ+f77H0FwAA+A6hGgAAOO9OnGGUmpqq3bt3e5yvmGkkle+19q9//cv9dWlpqZYvX66//e1vmjRpkpxOp2688cZq718T7733nvvzTp06yWq16s0339S1116ryy67TFOmTNFDDz0ki8WiPn36SJLuv/9+DRkyRHPnzj1lqCZJsbGxuv/++91f/+Mf/9CKFSv08MMPuwsONGjQQE6nUx07dlRiYqI+/fRTffXVVyouLlZgYKB27dolSTVa/lex+f8HH3xQqSDEAw88oM2bN2vFihWV2o0fP16//vrraYsHVJg+fbqmT59e7fm1a9fqmWeecYdql19+uW666aYa3ftUbDZbpUDt4MGD7sIR3oRq1157bZXHq9uv7brrrvOqr5s2bdIbb7yhESNGuAsWSOVFNebMmaO9e/d6BM7bt29XfHy8br75ZrVr18795+T3EQAA+B6hGgAAOC8q9uWSPPfm+vTTT92f9+3b111hszo2m01Dhw7VwYMHNW/ePM2cOdMdqoWEhCg7O7vavb/effddLV26VNdcc40mTJggqXxJ5aeffqrWrVu79zJ7+OGHdcMNN+iJJ57Q8uXLddFFF0kq329s9erVuummm9S5c2f16dNHq1at0v/+979T9vn+++/X6tWrZbfbZbPZdODAAUnSO++8o3fffdfj2hdffFHt27fX0aNHtXLlSn333Xfq3bu3fvrpJ0mq0XLJM93cvibLOE8lIyNDzz33nFauXCmpPAh85JFHPIounC0//fSTFi1apJUrV+qLL75QkyZNTrv880R33nmnxx55L730khwOh6ZMmeJx3bx581RUVKTExESP5cXvv/9+tT+z+/bt06RJkxQTE6NJkyZ5nAsMDNSxY8d01VVXqWPHjmrTpo2SkpLUoUMHvf/+++7r5syZo/Xr1+vuu+8+58tWAQCAdwjVAADAeREaGqrw8HDl5ORo//79VV5z4nK306kIlw4cOKDs7GxFRESoWbNmys7Orjbk2L17t7Zs2eLeE0yS/v73v6usrEzDhw/XU089Jal877DExETFxsbKMAy9+eabkso3/n/mmWfUs2dPRUdH69Zbb9WqVav0yiuvVFscQSqfXVdcXCzDMJSbmyuHw6HQ0FD3kj+pfD+4yMhItW3bVlL5DKq//e1v+uijj9S7d2999913kqqvbHqiiu/j0KFDq72mqsIGFWpTNfRES5cu1cqVK9WgQQPde++9GjFixFmtYllUVKT//Oc/ev/99/Xzzz9LKp+dVzHj63SFCk50yy23eFT/fOWVV+RwODRmzBiP65KTk1VUVKRhw4Z5VP9ctWpVlT9vH374oWbOnKkjR47ouuuu0xtvvKGsrCwdO3ZMwcHBeuqpp/Ttt996fK9bt26tHTt2yDAMmUwmff311+4Kqdu3b9esWbPO+L0BAABnD6EaAAA4b9q3b69169ZVWWnT6XQqKyurxveqKoDr2LGjtmzZos2bN1fZZs+ePZLkXnK5Zs0affzxx4qNjdWf/vQnd6gmyT1TaePGjVq5cqW6dOmia665Ri+++KKeeeYZvfDCC7rqqqs0aNAgjRo1SgsXLqy2r7NmzXJ/PmrUKP3444/66KOP3PuWff/99xo5cqT+8Ic/uPfcat68ubp27aqVK1dq+/btWrVqlVq3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6tatm0fhiO3bt+uVV17Rp59+KsMwNGjQID366KMqLCzUoEGD9MEHHyg4OFhjxozRhx9+qN27d2vz5s2EagAA1BGEagAAAPptc/uKj5GRkerTp89p202ePFlr165VVlaWrFarIiMjK12TkZGh1atX68svv9S3334rSbrhhhv00EMPuYs1NGzYUN27d9e4ceP0888/KyQkRM8884wGDx4sSXrppZd077336ttvv9Xo0aN1ww036Nlnn3Uv8fzhhx/0yy+/yGazKTg4uNr9zo4ePSpJ+te//nXK70VJSYmio6PVv3//034PJGn//v1yuVwyDENr166VpPNSrTI9Pb3Kfcfatm3r3jvvZCfun/fKK6/UqKJqdR555BF3xdQTTZ48WePGjVO7du0qtSkoKNA999yj7777TpIUERGhRx55xB2WBQUFKTk5WSNGjNCbb76pN998U1L58uk77rij1n0FAABnF6EaAACA5N6nrbi42Kt2N954o1asWKFGjRpp0qRJVVbNzMvL04wZM2QYhm6++WbdeeedlfZyKysr05dffqmff/5ZAwYM0IMPPqgmTZq4zwcGBur111/XK6+8ovnz52vw4MEee6atXr1ab775pmw2m+x2+ykDrYYNG+rvf/97tedLS0tVUlKi3/3udzUO1V544QV99NFHHsdO3oj/XOjVq5dat26tX3/9VQ0bNtRFF12krl276rbbbpPZbK6yzYmhWtu2bdW8efNav35wcLCkyj83Ve1JVyEkJERDhgzRhg0b9Je//EWTJk3ymMEmSW3atNE//vEP9xJgk8mkv/71r2rcuHGt+woAAM4uk1FX5vcDAAD4IYfDoczMzNOGHZs3b9ZFF110ykIDTqdT27ZtU4cOHU55r6NHj3rs81YX/PLLLxo+fLhiYmIUFxenK664QrfddpvXxRJqo7Cw0F2R1J8cPHjQIzitisvl0urVq9WwYUN17NjxPPUMAADUBKEaAAAAAAAA4KWq58QDAAAAAAAAqBahGgAAAAAAAOClC75QwcaNG2UYxnnZ7wMAAAAAAAB1l8PhkMlkUpcuXU577QU/U80wDNW3beUMw1BpaWm9e64LGe8p4B8Yq4B/YKwC/oGxCviH+jZWvcmJLviZahUz1Dp16uTjnpw9hYWFSklJUZs2bdxl3uHfeE8B/8BYBfwDYxXwD4xVwD/Ut7G6efPmGl97wc9UAwAAAAAAALxFqAYAAAAAAAB4iVANAAAAAAAA8FKtQrXk5GT17t1bV1xxhWbNmiWXy1Xjtp9++qkGDRqkTp06acCAAfriiy8qXbNp0yY9/vjjmjhxoubPn6+ioqIq7/Xhhx+qY8eO2r17d20eAwAAAAAAAKgVr0O1hQsXaubMmRoyZIimT5+uTz75RAsWLKhR2xUrVmjy5Mnq27evFi1apH79+mncuHFaunSp+5p169ZpxIgRKigoUPPmzbVo0SIlJiZWqryQlZWlZ599Vrfffrsuuugibx8DAAAAAAAAqDWvqn+WlpZq7ty5GjFihMaNGydJstvtSkpKUmJiogICTn27OXPmaODAgRo/frwkqWvXrkpPT9frr7+uwYMHyzAMPf744xozZoz7mj59+ujWW2/V1q1b1aFDB/e9nnvuOdlsNt17771ePTAAAAAAAABwprwK1bZs2aLc3FzddNNN7mM9evSQYRjavHmzunTpUm3bwsJCpaam6p577vE43rp1a33++eeSpOLiYo0ePVo33HCD+3zjxo3d5yqsW7dOy5cv1wsvvHBey7UahiGn06mysrLz9pq1UVJS4v5oNvvftnlWq1UWi8XX3QAAAAAAAKiWV6HaoUOHZDKZFB8f7z5mMpnUtGlTpaennzJUqwhJsrOzPY7v2LFDMTExkqSgoCANHTrUfc7lcik5OVmxsbHq1KmTJMnhcOixxx5TSEiI1q5dq2+++UbXXXed+vTp482jeDAMQ4WFhac8n5eXp+zsbDmdzlq/zvliGIYCAgK0b98+mUwmX3enVsLCwhQdHe23/T/bKvYVrG5/QQB1A2MV8A+MVcA/MFYB/1DfxqphGDXOIrwK1YqLixUYGCibzeZx3G63KzMz85Rt7Xa7OnfurOTkZPXq1UutWrXSZ599ps8//1wjR46sdP0HH3ygN954Qzk5OVq8eLH7NT/44AOlpaUpODhY+/fvV0ZGhpYtW6akpCT3klFvORwOpaSknPKagIAAhYeHKyQkhFlU55BhGCopKdHRo0d15MgRX3enzklLS/N1FwDUAGMV8A+MVcA/MFYB/1CfxurJuVd1vArVbDZblcsJrVarx/LM6jzxxBNKTExU//79FRISory8PFksFg0fPrzStW3atFGPHj20fPlyvffee3rssccklYdqYWFhWr58uVq0aCHDMPR/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xQz926let/Xr1+emm27K0KFDkySDBw/OjBkzsn79+r4cEarSxo0b09LSkscff/x3a8WyuX79+tTX12f69Ok93zNz5sxs2LAhx44d65sfAKrEqbJa7N5IVqFvFDvH2FehfzjTzqFasqpUG6Dq6+tzxRVX9Lr28ccf5/zzz8/YsWOzZcuW7Nq1KzfeeGMmTJiQ22+/PZ999lmZpuV07N+/P/v378+qVavS3NycyZMnZ9GiRfn+++971q+66qpe3zN69Oh8++23ZZgWqsudd96Z++6774RrxbK5b9++XH755Rk8eHCv9e7u7uzbt+9Pmxmq0amyWuzeSFahbxQ7x9hXoX84086hWrKqVKsQe/bsydq1azN37twMGjQo33zzTYYPH55FixZl+fLlaWhoyPz589PR0VHuUTmJzZs3Jzn+G4EXXnghixcvzrp167Jw4cIkSXd3d6/PqifJueeemx9++KHPZ4VqM2jQybfLYtns7u7O8OHDe60PGTIkyfGHvwJnz8myWigUit4bySqUx9+fYwYPHmxfhX6q1M6hWrLqmWoVoFAoZOnSpWlsbMy9996bQqGQV199NWPHjs2wYcOSJFOmTMns2bOzdu3aPPHEE2WemBO57rrr8vbbb/f6zdyoUaPS0tKS7du3p66urlfLnxz/Dwy6u7v7elTg7xTLZl1d3e8O+v//oGX5hb5xOvdGsgp97x/PMYl9FfqjP9I5VEtWlWoVYNWqVfn888/z2muv5bzzzkuSXHPNNb2+pra2Nk1NTdm2bVs5RuQ0NDQ0pKGhode1a6+9Nkmybdu2NDY2Zu/evb3Wu7q6ep43AZRHsWw2Njbm66+/7rX+448/JknPTQjw5xo0aFDReyNZhb53onOMfRX6nz/SOVRLVn38c4D74osv8txzz2XhwoU9BcxPP/10wofXd3V15dChQ309Iqdp586d2bFjR69rXV1dSZLDhw+nqakpmzZt6rW+devWjBw5sq9GBE6gWDabmpqyY8eOHDx4sGd9y5YtSSK/0EdO595IVqFvnegck9hXob/5o51DtWRVqTaAdXR05JFHHskNN9yQBx98sNf1+++/P7t37+65tnv37mzcuDETJ04sw6ScjlWrVuWpp57qde2tt95KcvwfpNmzZ+ejjz7qKd46OzvT1tZ20v/CGOgbxbI5ZcqUDBs2LCtXrkxy/O3za9asyZVXXpkLLrigbHNDNTmdeyNZhb5zsnNMYl+F/uRMOodqyaqPfw5QR44cyYIFC5Ikc+fO7Wl8k+TSSy/NhAkTMn/+/MyZMyeHDx/O6tWrM2zYsMybN69cI1PEXXfdldtvvz2LFy/O5MmT097entdffz0333xzxo0bl8suuyxXX3117r777kyfPj2fffZZGhsbc8cdd5R7dKhqM2fOPGU2a2tr8+ijj2bZsmXZvn17Dhw4kK+++iorVqwo8+RQPZqamoreG8kq9I1TnWPGjBljX4V+4kw7h2rJak2hUCiUewhK197enltvvfWEa88880ymTZuWZcuW5dNPP01dXV2mTZuW1tbWXHjhhX08KaX45JNP8uyzz2bnzp0ZPXp05syZk3vuuafnYa2//vprli9fnnXr1mXs2LFpbW3NqFGjyjw1VI8NGzZk7ty5aWtry5gxY3qun042P/jgg6xevTqFQiH3339/ZsyY0dfjQ9U4UVa/++6707o3klX4cxU7x9x22232VegHzlbnUOlZVaoBAAAAQIk8Uw0AAAAASqRUAwAAAIASKdUAAAAAoERKNQAAAAAokVINAAAAAEqkVAMAAACAEinVAAAAAKBESjUAAAAAKJFSDQAAAABKpFQDAAAAgBL9H91jGwILayEiAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 1500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "num_round =[25,50,100,150,200,250]\n",
    "plt.figure(figsize=(15,5),dpi=100)\n",
    "plt.plot(num_round ,gbdc_result, c=\"#01a2d9\",label=\"gbdc\")\n",
    "print(\"GBDC最高分是{: .5f}，最高分对应的树数量是{}\".format(max(gbdc_result), num_round[gbdc_result.index(max(gbdc_result))]))\n",
    "sns.set(style=\"whitegrid\" ,font=\"simhei\" , font_scale=1.1)\n",
    "plt.title(\"GBC树数量学习曲线\",fontsize=18)\n",
    "plt.legend()\n",
    "plt.xticks(num_round)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "id": "b9184565",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RFC(n_estimators=1000, random_state=1412,class_weight={0:0.5,1:2})\n",
    "gbdc = GBC(n_estimators=200,learning_rate=0.26166,random_state=1412)\n",
    "param = {\"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" , \"scale_pos_weight\" :0.03, \"eta\" : 0.24166}\n",
    "xgbcv = xgb.cv(param,dtrain,num_boost_round=70,nfold=5,seed=1412,shuffle=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "848dbe68",
   "metadata": {},
   "source": [
    "### 过拟合问题"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b141c030",
   "metadata": {},
   "source": [
    "调整最大深度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "id": "00c50f58",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "5\n",
      "\t rf:0.90824\n",
      "\t gbd:0.93508\n",
      "\t xgb:0.93586\n",
      "10\n",
      "\t rf:0.93071\n",
      "\t gbd:0.92831\n",
      "\t xgb:0.93710\n",
      "15\n",
      "\t rf:0.93265\n",
      "\t gbd:0.92644\n",
      "\t xgb:0.93590\n",
      "20\n",
      "\t rf:0.93061\n",
      "\t gbd:0.92657\n",
      "\t xgb:0.93580\n",
      "25\n",
      "\t rf:0.92989\n",
      "\t gbd:0.92512\n",
      "\t xgb:0.93547\n",
      "30\n",
      "\t rf:0.92950\n",
      "\t gbd:0.91347\n",
      "\t xgb:0.93573\n"
     ]
    }
   ],
   "source": [
    "for max_depth in [5,10,15,20,25,30]:\n",
    "    cv = KFold(n_splits=5,shuffle=True,random_state=1412)\n",
    "    rf = RFC(n_estimators=500,max_depth=max_depth,random_state=1412,class_weight={0:0.5,1:2})\n",
    "    gbdc = GBC(n_estimators=200,max_depth=max_depth,learning_rate=0.26166,random_state=1412)\n",
    "    param = {\"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" ,\"max_depth\":max_depth,\"scale_pos_weight\" :0.03, \"eta\" : 0.24166}\n",
    "    gbdcv = cross_val_score(gbdc ,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    rfcv = cross_val_score(rf,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    xgbcv = xgb.cv(param,dtrain,num_boost_round=70,nfold=5,seed=1412, shuffle=True)\n",
    "    test_auc = xgbcv.loc[69,\"test-auc-mean\"]\n",
    "    print(max_depth)\n",
    "    print(\"\\t rf:{:.5f}\".format( rfcv.mean()))\n",
    "    print(\"\\t gbd:{:.5f}\".format(gbdcv. mean()))\n",
    "    print(\"\\t xgb:{:.5f}\".format(test_auc))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "id": "9ed70f97",
   "metadata": {},
   "outputs": [],
   "source": [
    "result = []\n",
    "for max_depth in range(10,21):\n",
    "    cv = KFold(n_splits=5 ,shuffle=True ,random_state=1412)\n",
    "    rf = RFC(n_estimators=1000,max_depth=max_depth,random_state=1412,class_weight={0:0.5,1:2})\n",
    "    rfcv = cross_val_score(rf ,Xtrain, Ytrain,cv=cv,scoring=\"roc_auc\")\n",
    "    result.append(rfcv .mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "id": "a7f38839",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "RF最高分是0.93320，最高分对应的最大深度是13\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABN0AAAHFCAYAAADG74/aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACtq0lEQVR4nOzdd3hU1drG4d/MZDLpCUkIJCEhQOhNQBFE6QqIgnIQPSoWUKxgARtWsGA9FqwICNgVFZCOFBUVUbr0lpBQQnovk5n9/YGZj0hLEJhM8tzXxcVh7TLvZDkc8mSt/ZoMwzAQERERERERERGRM8bs7gJERERERERERESqG4VuIiIiIiIiIiIiZ5hCNxERERERERERkTNMoZuIiIiIiIiIiMgZptBNRERERERERETkDFPoJiIiIiIiIiIicoYpdBMRERERERERETnDFLqJiIiIiIiIiIicYQrdREREREREREREzjCFbiIiIiJyRhUVFbF48eITHn/11Vf58ccfz2FFlZORkUFycjJZWVnlxvft28f69etJSkpyT2EiIiLiURS6iYiIiBxlxIgRtG7dmt9++63S186bN4/WrVvz4osvnvCcH374AbvdDsDBgwdp0aIFgwYNch2fO3cuhw4dcv353XffZcyYMaxatapSteTn57N79+7T/pWfn3/S+zscDl5++WUWLVpUbjwnJ4eBAwcycuRI5s+ff8x1KSkpfPTRR4wYMYLnnnuuUu/pXBk/fjy9evViypQp5cbff/99rr32Wj766KPTuu/dd9/NrFmzKCkpOe7xsWPHcsstt/Dee++d1v1FRESkavFydwEiIiIiVYnZbKakpISoqKjTur6kpASLxXLcY4sXL2bkyJFceeWVvPrqq3h5eeFwOLBarcCRFVaPPvooTZs25ZtvvgFg7dq1/Pzzz1x44YV06tSpwnX88ccf3HHHHaf1HgAmTZpEt27dTnj822+/ZcqUKZjNZsaPH88111wDQFBQEBdeeCEJCQk8+eSTtG7dmpiYGNd1H374IaWlpYSHh3P77befso4XXniBOXPmYLVasVqtJ/zanszdd9/N1VdfXeHzbTYbALVq1So37uPjU+73yli/fj1Lly7lxx9/JDw8nIsvvviYcwzD4LfffqNJkyYALFu2jE8//ZQXXniBOnXqVPo1RURExL0UuomIiEiV17NnT/bv319uzGazUa9ePbp168Ztt91GWFgYcCQMeuyxx055z+joaJYtW3bMeFmgEhAQUOk6y8IzL6/j/xPr0ksv5eqrr+a7776jdevWDBgwAABvb28APv30U+x2O/fdd5/rmq1bt+Ll5cVll11WqVrKgqNhw4bxyCOPVPi6l156ialTp+Lr63vS86655hqSkpL44IMPeOqppwgICKBfv34APP7446xevZq9e/cybtw4Jk+eDMCBAwf46quvsFgsvPnmmxUKkkpKSsjPz3eFbiaTqcLBW3Z2Nna73TUvFVX23oOCgsqNl31NK3s/gE8++QSABx988LiBG0BISAgAkZGRwJGVkCtXruSuu+7is88+O62wT0RERNxHoZuIiIh4jMjISIKDgzEMg4yMDNdWyFmzZvHxxx8THx/vOtdqtdKoUaMT3isiIuK44yaTyXU9wHfffcfEiRNdgU8ZLy8v5syZg9n8/0/rOFXoZjKZePrpp0lISCA4ONh1vslkwul08uOPP9KiRQu6du0KwPbt20lLS+OCCy4gODj4lF+fo5UFRFOnTmXq1KmVuhYqtprrwQcf5ODBg8ydO5eUlJRyr/3EE0/w8ssvM2bMGNf4a6+9RnFxMcOHD+f888+vUB3PPPMMzzzzTKXrB/jvf//L2rVrjwnPTqVsTo+e239j9+7dzJ8/nzZt2nDrrbee8Dw/Pz/g/+fuhhtu4Pfff+fXX3/l999/P+nKQxEREal6FLqJiIiIxxg1alS5559t2LCBkSNHkpKSwlNPPcVnn33mOhYREcHs2bMrdN+CggIcDocr7ABwOp0UFBTg7e1NTEwM3t7erhDml19+ISws7JhQpmzFGhzZKlhUVFRuxdhzzz2HzWbjwgsvJCkpiQ8//BCA/fv3884779C1a1cyMjJ46aWX6NmzJxs3bgQ47sooh8NBYWEhvr6+x1355XQ6ARg0aBC33XZbhb4OAJMnT+bbb7/FMIwKnf/ss8/Sv39/unfvXm784osvplOnTq4AcuPGjcybN4+4uDhGjRpV4XrKGIaB3W4v9zU+lbJnp5WFWf+0Y8cOcnJyjhlPTU0FIDExkT///NM1XhYsHjp0qNx4GR8fH1q1anXM+BtvvIFhGDzzzDOYzWYOHTrE119/zfDhw09YW5lx48ZRXFxMWFgYa9asoWnTpqe1ClNERETOPYVuIiIi4rHatm3L2LFjue+++1izZg3p6emndZ93333XFYCVufDCC4EjD8+fPn26a7y0tJQ2bdoQGRnJtGnTmDhxIjabDS8vL1fIM2XKFD744AMuvfRSXn/9dde1H3/88XFfPzk5mbfffrvcWHR0ND/99BMAr7/+ern7HG3+/PnHXdFXWlp6qrd9Uid62H9paSmtWrWqcCj3TwkJCbRt27bcWGRkJCtWrDjpdTNmzOCzzz5j7NixFV7xVdaw4kRbZV966SVWrlx5wuvff/993n///WPGZ82axaxZs44Zb9KkCd9//325seXLl7N48WJuvPFGWrZsCRzZRjxp0iQWLFjArFmzjgkS7XY7KSkpbNu2je3bt7NmzRpWr15NQUEBkydP5pJLLjnp+xYREZGqQaGbiIiIeLSjmwv887lvFdW8eXMGDRqEzWZj9uzZFBQUMHjwYBwOxzHPHTt48CAOh4MGDRoQERFBu3btXA/4z8rK4o8//iAqKorY2FjXA/HLfP/993h7e+Pt7c2TTz7pCnwuuOACXn/9dQoLC7HZbJSUlFBYWMjzzz9PYGBguSYABw8eZMmSJbRt25bGjRufcNVTUVERcOQZd99++22lvyYFBQXHHffy8sLb25vi4mIaNGhQ6fserbS0lKSkpFOu9rLb7cycOZOEhARGjBjBZZddxhNPPHHKZ8KVBYdHr2A8Wtn4oEGD+M9//uManz59OosXL+bOO+8sF3B99tlnzJs3j6uuusrVOAJgxYoVfPjhh8e8zt69e3n00UeJioriwQcfBI40y/jss8+wWq288sorwJHtp9u3b3etnnv55Zd54YUXXPepU6cOrVq1IjY2lsDAwJO+ZxEREak6FLqJiIiIRyvbRgmn11USoH///vTv35/CwkK++uorAB555BGCgoLIzMzkySefpGvXrlx66aUkJiYC0LRpUy6//HIuv/xy131+//13brrpJvr168fIkSOPeZ0mTZpQUlLC008/zcqVKxk0aBDffvstFouFV199lT179jBlyhTq1KnDpEmTcDqd9OjRg8cff9x1j7lz57JkyRL69OnD8OHDy90/KSkJwzDw8fGhQ4cO/PXXX6f10P+yrbHp6enk5+cTFBTkesj/0RYuXFjpex8tOTmZXr16nXLVnNVqZebMmXz44Yd88MEHLF68mF9++YWHH36Y66677oTXlYVuJ9qSWrb1NSoqqtwz5ubPnw9A/fr1y40vXboUgLp165Yb37t3b7n7AeTl5TF06FCysrJo164dU6ZMoaioiM2bN5OXl8fo0aNxOp20adPmmPffqFEjBgwYQMuWLWnRokWln+cnIiIiVYNCNxEREfFoq1atAsBisRATE8Nff/112vfavHkzDoej3JhhGCxfvpwFCxbQrFkz1q1bBxxZHVdZO3bs4LHHHuOvv/7iuuuuY8yYMXz77beUlpbSs2dP5syZwy233MKUKVNc2xcPHz5c7h5lfy7r1nq0sWPHsnr16nJjFe30eTSn01kuCHryySe58cYbXceKi4srfc+TKVuVdzI2m417772Xvn37MnbsWDZs2MDTTz/N0qVLee21147bLKFse+mJVrod3RjjTDj6fgEBATRs2JDU1FSWL1/O8uXL8fPzo6CggObNmzN8+HAcDgfnnXceHTp0oEOHDuTl5fHQQw9xwQUXnPA5fKmpqXh5eVGrVq0zWruIiIiceQrdRERExCPl5uby888/8+yzzwJHtgge/eyuw4cPM3DgwGOu8/f3L9dw4WhlK5ngyLbM9u3b06ZNGyZMmMBtt93G008/jdPpxGq10qZNG37++WcmTJjA//73P5o1a3bSer/44guee+45DMNg7Nix3HzzzaSlpQFHVmT16dOHsWPHMnHiRD788EN2794NHOlgerSyh/nXq1fvmNd48cUXKSkpwcvLy/XrdEI3ONKowel0UlRUVG6Vm8Ph4IYbbnD9ec2aNdxzzz1YrVbXr4qEWXPmzCE4OJj77rvvlNtLjxYfH89nn33GW2+9xaRJk8jKyjrhM9tOtdLtTHUnPZERI0Zw9dVX07ZtW2JiYnjppZf49NNPGT9+PBaLBYvFwhdffOE6f/369QBkZWW5xg4cOMCWLVtYvXo1v/32Gzt27OC5554rt71VREREqiaFbiIiIuIxHnvsMR577LFjxjt06MBDDz1Ubsxut7Nt27Zjzj3ZM7F++OEH1/+eOHEitWrVYtasWVxyySUMGTKEr776CpPJxAUXXICvry+HDh1i9+7dvPvuu7z11lsnrf26664jJSWFyy67jObNm1NSUsJbb73F0KFD6dWrFwBDhw6lb9++DBs2DICLLrqIX3/9leTkZFfIVtZZs379+se8RnR0tOt/v/3220ycOPGkNZ3Mgw8+yB133HHMuNVq5amnnnL92eFwkJeXh6+vLw6HA7vdftzQLSMjw7XyDI6sIAwMDOTuu++udG1eXl48+OCDtGjRglatWp1wC+2pnul2th3ddXbHjh18/vnn3HDDDbRp0+aYc7Oysti3bx9wZJvyDTfccEx31cDAQM4//3xtNxUREfEQCt1ERETEY0RGRhIcHIzT6WTHjh0AjBs3jsGDB5d7nhYcCaCWLVtW4XuvXLnSFXoA3Hvvvbz44ou8+OKLPPfcc4wZM4ZFixaRnZ1N7969gSOr62bMmMHixYvZuXPnKV/jvvvuc/3vVatW8eWXX9K2bVsefvhh17iPjw+tWrUiOjqaIUOG8Ouvv7Jq1SoGDx4MwM6dOwkODqZ27donfS1/f38AbrvtNgYNGlTu2A8//MD//vc/HnzwQdd7KTN79mw++OCDE64e+6eOHTuedEtvamoqr732mmu7bN26dRkwYMBpPWvun/r27VvuzyUlJWRmZroaLJSFfCda6Vbm7bffPqZ7LJw45D1RV9MTsdvtPProo4SHh3P//fe7xouKihg6dCgHDx50halw5Gvm5+dHp06daNq0Kc2aNaNp06bExMRU+DVFRETE/RS6iYiIiMcYNWqUK0C67rrrWLduHSkpKccEbqdj2rRpADRs2JA9e/bQr18/li1bxsyZMxk0aBDt2rUjNDSU7OxsfvzxR26++WYsFgv33nsvo0aN4r333uPaa6894f1//vlnxowZg9Vqxdvb29UddP/+/QwYMKDcuZdffjkvvPAC2dnZWCwWVq5cyeDBg8nPz2fXrl107dr1lO/n335N/u31drud6dOn8+6775Kfn4+vry933XUXt9xyyxlfeZaens7nn3/OF198wfXXX8/dd9+NYRjY7XYsFssp30vnzp256KKLXH9etmwZ69ato0+fPrRq1co1/uOPP/Lnn39y4YUXllvFtmnTJhYvXnzcexuGwVNPPcXmzZt57733ynWb9fHxITU1ldjYWK644gqaNWvG999/z8qVK5k0aRJxcXHAkVVy48eP5/nnnyciIuJ0vkQiIiLiBgrdRERExCPdddddjBgxgo8//phbb731uA/Sr6hffvmFn3/+mfbt21O3bl327NkDwOjRo/nyyy+pW7cuK1asYO/evVgsFn755RdmzpzJ4MGD6d27N3Xr1mXBggVceOGFJ3wNh8NBQUEBPj4+2O12srKyXKu9cnNzXb8XFxfTsmVLTCYTISEhdOjQgeXLl5OXl8cff/yB0+mkQ4cOp3xPZQ0hJk+ezOTJk497zv/+9z/+97//HffYv20ycPDgQV555RUA+vXrx0MPPVRu++uZsHbtWr7++mvmzp3r2kpa9py2UzVROFqHDh0YMWKE68+HDh1i3bp1dO/evdwqwczMTP7880/atWtX7vyvv/76uKFbQkICTz75JKtXryYyMpKdO3fyxx9/kJGRQVpaGmPHjmXJkiXlVv2lp6ezcuVKtm3bRlxcHHl5eYwcOZKEhASuuuoqvvjiC2JjYyv5lRIRERF3UOgmIiIiHqlbt260bNmSzZs3M336dEaOHHla97Hb7Tz55JMA3HHHHcyePdt17LzzzuO8886jtLSUO+64A4vFwjvvvMN9993HSy+9RLdu3ahduza33347vr6+REVFnfB1unfvzqZNmwCYNWsWjzzyCKNGjXKFN06nkz59+pCenk6XLl1c1w0YMIDVq1fz1VdfsWHDBgA6dep0yvdVFkI9/PDDDB8+vNyxb7/9lscee4wJEyYcs/V02rRpTJgw4Zgurkd/vQoLC/Hx8cHLy+uEzQjKuqv6+fnxxhtvHPecstVoRUVFBAQEVKixQVpaGrNnz2bmzJmucDQkJITrr7+ea6+9loYNG5Z7/6faWno22Ww2VzfZgwcPugJOX19fQkJCqFu37jHbbNu2bQvA8uXL6dy5M3fccQcJCQnExcUxceJEBW4iIiIeRKGbiIiIeKy7776be+65hxkzZnDLLbectEnCiVitVvr378+mTZvo3r17udCtzLRp09ixYwfXXnstPXr0YPjw4bz77ru88MILvP7669x4443AkQfgn0ppaSnvvfce4eHhDB061DW+ZMkS9u3bx+23346Pj49rfMCAAbz++uu8//77FBUV0aJFi+M+iP+fykKnl19+mZdffvm455zomWUAhYWFxx1fu3YtN9100ylfv0xBQQFNmzY95XlLly49bkdWgLy8PH744Qfmzp3Lr7/+6goE27dvz7XXXku/fv2OWdFWFUK3yMhIhgwZQkxMDA0bNiQ2NpbIyMiT/nfarl07wsPDWbx4MZs3b2bnzp20aNGCKVOmEBoaeg6rFxERkX9LoZuIiIh4rF69etGkSRN27NjB9OnTuffee0/rPqNGjeLAgQPHPfbnn3/y+uuv4+/v71pNN2LECL744gvmz5/P8OHDyz3361S+//57EhISALjqqqvo2LEj7du356233sLX19fVubSMzWbj+uuvd3UirWjgdf3119OvX7/jHjtZI4UyJwp4fH19iY+PP+VKNzgS0JnNZs4777zjHi9b6VZYWHjcxgoHDx7kqaee4rfffnNtFzWbzfTt25cRI0bQsmXLE752ZbaXnk3PPvvsCY/t3buXmJiYcs+cs1gs9O7dmy+++IKdO3fSrl07Pvzww9MKlEVERMS9FLqJiIiIxzKZTNx111088MADrtVup8NqtVK/fv1jxtevX88999xDaWkp48aNc3UM9fX15c477yQ0NLRSgRvA1Vdfzfnnn89vv/3GqlWrWL58OV999RVwZJvkrFmzGDx4cLln1B0dbJWWlp7yNfLy8tizZw8+Pj74+PhU6vlspaWlFBcXk5GRwQUXXHDM8TZt2jBv3rwK3atp06b4+Pjw+eefV/j1jxYZGYnFYsFut2Oz2bjqqqu47bbbKrTFsmylm7tDNzgSAO7fv589e/awZcsWNm3axIYNG8jMzGTdunXlQrdZs2a5Or0CDB8+vFzglpGRoRVvIiIiHkKhm4iIiHi0vn37MnHiRPbs2cOMGTOoW7fuv7qfYRiu36dPn05WVhYDBw5k8ODB5c67+eabT/s1YmJiiImJ4corr+Shhx5iyZIlnHfeeSQlJfHSSy/x6aefsmjRIkwmE2+99Rbvv/8+0dHRpKWl8dRTT2EYBkOGDDnh/ffu3csNN9xwyjpO1kjBYrGwZcuW036PZ8pDDz1E48aNufnmmwkPD6/wdTt37gQ46Qqxsm2qSUlJ/Prrr67xQ4cOAbBr165y42WrIffv319ufPfu3ce9/9ixY/nll184fPgwTqfTNR4SEkLr1q1p27atK3DLzMzkhRdeYM6cOdhsNq6++mq+++47nn32WTp06EBoaCglJSX069ePQYMGcffdd2v1m4iISBWn0E1ERESqvGXLlp3wmNlsZsGCBeXG/tkcoDLKwhGn08nrr79Oz5496dOnT4WuPXz4cIXOKykpYe7cubz11lscPHiQoUOHMnbsWJxOJ3PnzsXLy4u9e/fy1FNPsXbtWho0aMC0adP4448/eOihh3jqqac4cOAA99xzz3G3ZTZq1Ii5c+cSEhJCSEjIMeecrJGCw+GgtLSU/Pz8Cr2Xs61Ro0aMHj36pOfk5uaSmJiIj48PpaWlJCcnuzqnNm7c+ITXlc317Nmzj/ssvylTpjBlypRjxr///nu+//77Y8bLAtsyvXv35ptvviEgIIBOnTrRpUsXLrjgAuLj412rD/Py8vjoo4+YOnUqWVlZxMXF8eabb9KsWTOsVitfffUVt956K6+88gobN24kKyuLOXPm8MADD5z0ayIiIiLup9BNRERE5Chl2xLLngl25ZVXnvKaJUuWMG7cODIzMwGIiIg45pzCwkJ++eUXfv75ZxYuXEhWVhaNGzdm2rRpdO7cGTgSIHbo0IHJkyfzyCOPUFpaSv/+/Rk/fjwBAQFceeWV5OfnM378eN577z0WLFjA66+/TosWLQDIyspi1qxZeHl54evrW27b4tHWr1/v+t1isRz3HKfTSXFxMcXFxfznP/8hICDglF+HrKws8vLyANi6despzz9TvL29GTVqFPv37y83bjabj1mheLSyuR4yZMhJVw6eytKlS3nvvfdc/82U6d69O5MmTaJz587HbegwefJk3n77bQoLCzGZTFxzzTU89thj+Pv7A/D000+TlpbGsmXLyv13OGLECLc2iBAREZGKUegmIiIicpTi4mIAioqKKnxNz549efLJJzGbzfTv35+BAwce97zPP/+clStX0q5dO2666Sb69u17TCOCvXv3MmvWLOrVq8fYsWPp1q1buePXXXcd8fHxPPTQQ1xwwQU0a9bMdSwjI4NXXnkFb29vbDbbCQM1gPDwcJYuXcrSpUuPe7y0tJSSkhKKi4vp1atXhUK3LVu2cOutt5YbO96z8s40m83Gf//7X1599VX8/f2JiYmhRYsWXH311bRt2/aE15WFbhEREbRu3fq0X3/btm3A//+3U8ZsNh8zf0cbNGgQM2bMoFGjRjz66KPHPEPPy8uLiRMn8vLLL/Pxxx/jdDq56KKLXN1yRUREpGozGf9cBy8iIiIilZaSkkKtWrVOugLp8OHD5OTkEB8ff9J7bd26lfj4+ONuHS2Tk5ODj49PlVvxNGDAANLT06lXrx4tW7bkpptuIi4u7qy/rt1ux+Fw4OPjc9Zf60xKSUkhIiLilM0udu7cSUJCAt27dz/pfxciIiJSdSh0ExEREREREREROcPMpz5FREREREREREREKkOhm4iIiIiIiIiIyBmmRgqnsG7dOgzD0LMzRERERERE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WInv2ktD7L7HUROjA+nS1KnJNiZT001EREREREREpJ5qFhjAL1o34RetmwDg8RrszitjQ2YJ6zMqd0fdk1dGSkE5KQXl/P1AAQCukw28nlEuEk8+mtoyyG7mrfgdNd1ERERERERERBoIm9VCfFMn8U2d/PbyyrHcMg///dHacBsy3eSUeVl7ooS1J/7/bLhWQQGVs+GiXfSKCiQh0onLZjXpTho/Nd1ERERERERERBqwcIeN61oEc12Lyg0TDcNgX345GzJLTjbi3GzPLSW9uIJlhwpZdqgQALsVujZ10vPk2nCJUS7aNrFjseix1NqgppuIiIiIiIiISCNisViIC3MQF+bg9kvDACgs97Il282GDDcbTs6GO+72sCmrlE1ZpczbW3ltM5ft5NpwlY24qyJdhNg1G+5CqOkmIiIiIiIiItLINbFbuaZ5ENc0DwIqZ8MdLKrwNeA2Zrr5JtvNCbeHD9KL+CC9CACrBTqHOyqbcCfXhosLdWDVbLhzUtNNRERERERERMTPWCwWYpvYiW1iZ3TbUADcHi9bs0vZkFG5U+qGTDeHiirYnlPG9pwyXt2fB0C4w0rPUzulRgXSI8pFhNNm5u3US2q6iYiIiIiIiIgILpuVXtGB9IoOBJoCcKS4wteA25DhZnOWm9wyL58eKebTI8W+a+NC7ST61oYLpFO4gwCrf8+GU9NNRERERERERETOqEVQADdfEsLNl4QAUO412JFTevKR1BI2ZLjZX1DO3vzKr8U/5AMQHGDh55EuuocH0L3cSgczb8IkarqJiIiIiIiIiMh5sVstJES6SIh0cW9cOACZbo9vNtzGDDcbs9wUlHtZc7yENcch3BbIsG7m5jaDmm4iIiIiIiIiInLBolw2bmjVhBtaNQHA4zX4Lr+MDRlu1h0vpHlJlskJzaGmm4iIiIiIiIiI1Bqb1UKncCedwp38uqWdPXuOmR3JFFazA4iIiIiIiIiIiDQ2arqJiIiIiIiIiIjUMjXdREREREREREREapmabiIiIiIiIiIiIrVMTTcREREREREREZFapqabiIiIiIiIiIhILVPTTUREREREREREpJap6SYiIiIiIiIiIlLLLqjptmjRIq655hp69erFiy++iNfrPe9r//Of/zBixAji4+MZOnQoq1evPu2c7du3M3PmTKZMmcIrr7xCSUnJacdHjRpFt27dSE5O5ujRo1WOz549m7i4uCpfo0aNupBbFRERERERERERqbEaN93eeOMNnnvuOUaNGsXs2bP5+OOPWbhw4Xldu2LFCqZNm0ZSUhKLFy9m8ODBTJw4kWXLlvnO2bBhA2PGjKGoqIhWrVqxePFikpOTMQwDgPT0dJKTkwkODuall16iefPm3HXXXZSXl/teY/fu3YwdO5Zly5b5vmbPnl3TWxUREREREREREbkgATU5uaysjPnz5zNmzBgmTpwIgNPpZNKkSSQnJxMQUP3LzZs3j+HDh3PfffcBkJCQwMGDB3n11VcZOXIkhmEwc+ZM7rrrLt85/fv357bbbmP37t106tSJhQsX4nK5WLBgAYGBgfTu3ZtBgwbx2WefMXToUAzDYPfu3dx5553Ex8dfyP8nIiIiIiIiIiIi/5MazXTbtWsX+fn5DBs2zDeWmJiIYRjs2LGj2muLi4tJSUmhT58+VcYvvfRSDh8+DIDb7eaOO+5g/PjxvuPNmzf3HQNYv3491113HYGBgQDYbDaSkpJYv349AAcPHqSwsJDOnTvX5NZERERERERERERqTY1muh0/fhyLxUJcXJxvzGKx0KJFCw4ePEi3bt3Oeq3NZgMgNze3yvi+ffto1qwZAIGBgdxyyy2+Y16vl0WLFhETE+ObtXbixAmuuOKKKq/RokUL1qxZA8DOnTtxOBxMmDCBffv2ERERwc0338y9996L3W6vye36GIZBcXHxBV1bH51aI++na+VJ/aI6NQyqU/2nGjUMqlPDoDrVf6pRw6A6NQyqU/2nGjUMjbFOhmFgsVjOeV6Nmm5utxuXy4XD4agy7nQ6yc7OrvZap9NJly5dWLRoEf369aNNmzZ8+umnrFq1irFjx552/jvvvMNrr71GXl4eb775pu97ut1uQkJCTnvtnJwcoHKTBbvdzvXXX8/999/Pt99+y7x58zAMg6lTp9bkdn3Ky8vZs2fPBV1bn6WmppodQc6D6tQwqE71n2rUMKhODYPqVP+pRg2D6tQwqE71n2rUMDS2Ov20N3YmNWq6ORwOrNbTn0i12+2+xz+r8/jjj5OcnMyQIUMIDg6moKAAm83Grbfeetq5l112GYmJibz33nssWbKExx57zJfh1Ky5H+c69f3Hjx/P2LFjad26NQC9evXC7XbzzjvvMHny5DPmr86pDRoudJZcfWQYBhUVFQQEBJxXZ1bMoTo1DKpT/acaNQyqU8OgOtV/qlHDoDo1DKpT/acaNQyNsU7l5eVVNvQ8mxo13SIjIykqKqKwsJAmTZr4xvPy8ggKCjrn9R06dODzzz/nq6++4ujRo8yePZvhw4cTGxt72rndu3ene/fuDBgwgN/+9rcMHTqUHj16EBkZybFjx6qcm5ub61vjrUWLFmd8rb/+9a8cP36cmJiYmtyy7weisfxgQOW9nE9HVsylOjUMqlP9pxo1DKpTw6A61X+qUcOgOjUMqlP9pxo1DI2xThaLpfYfL+3YsSN2u50tW7ZwzTXXAFBYWEhqaqpvXbZzCQwMZPDgwcydOxen08nkyZN9xzweD0eOHPHNUgPo27cvdrudlJQUevToQZcuXdiyZQvjxo3znbNr1y7f99+yZQtt27YlIiLCd/zUOnKlpaU1uV2AatepExEREREREREROZMaPWsZEhJCnz59WLhwIR6PB4C///3vGIZBYmLieb9OYWEhb7/9NrfffnuVmWdpaWkMHDiQ7du3+8bS09MpLy+nZcuWAAwePJgvvviC/fv3+46vXr2a3r17A/CHP/yBJUuW+K43DIP333+fiIgILrnkkprcroiIiIiIiIiIyAWp0Uw3gEmTJnHrrbcyevRoYmJiWLlyJWPHjiUiIoKcnBzS09Pp2LHjaeuu/diiRYuwWq3cfffdVcZjY2Pp378/kyZN4v7776dp06bMmTOHDh06+Jp6AwcOpGPHjowZM4b+/fuzdu1aIiMjGTVqFADjxo3jySefxOPxEBMTw6pVq1i7di1//OMfa7yem4iIiIiIiIiIyIWwGIZh1PSivXv3MmfOHI4dO8b111/PHXfcgc1m49133+Whhx5i06ZNhIaGnvHazMxMBg0axIMPPsivf/3r044XFBTw5z//mVWrVuH1ern22muZPn06UVFRvnNKSkqYN28e69ato127dkyfPp2f/exnvuOLFi1i8eLF5Obm0r59eyZNmuR7HFZERERERERERORiu6Cmm4iIiIiIiIiIiJydnrcUERERERERERGpZWq6iYiIiIiIiIiI1DI13URERERERERERGqZmm4iIiIiIiIiIiK1TE03ERERERERERGRWqamm4iIiIiIiIiISC1T001ERERERERERKSWqekmIiIiIiIiIiJSy9R08wMpKSkkJCSQnp5eZXz79u2MGjWKbt26kZyczNGjR01KKHD2OgF4PB7uvPNO5s6da0Iy+bGz1Wnx4sVce+21dOrUiaSkJD788EOTEsrZalRYWMiCBQuYMmUKTzzxBHv37jUpoUD1n3mnvPHGGyQlJdVhKvmps9WpZ8+exMXFVflasmSJSSn927neS8uXL6dz584cOHCgjpPJj52pTklJSae9j059VffZKBfP2d5Pb775JklJSVx55ZXceOONrFixwqSEcqYaeTweXn75ZQYNGkR8fDxjx47l+++/NzGl/8rOzmbatGkkJCQQHx/P7bffTlpamu+4P/YgAswOIBfXsWPHuOeeeygqKqoynp6eTnJyMvHx8bz00kusWLGCu+66i3fffRe73W5SWv91tjoBGIbBk08+ydq1a+natWvdhxOfs9Xp3Xff5emnn+ZXv/oVCQkJLF++nOnTp9OmTRuuvPJKk9L6p7PVyO128+tf/xq73U7fvn3ZtGkTI0eOZNmyZcTFxZmU1n9V95l3yqFDh3jxxReJiIiow2TyY9X9GyI3N5fXX3+dkJAQ33jLli3rOqLfO9d7KScnh6effprx48fTtm3bOk4np5ytTi+//DJlZWVVxj744AM++eQToqOj6zKicPY6ffXVV/zlL3/h0UcfpXXr1nz22Wf87ne/IzIykp49e5qU1j+drUazZs3ik08+YcaMGbRs2ZLFixczcuRI/vWvf9G+fXuT0vqnKVOmkJqayqRJk7Db7cyfP597772XDz/80G97EGq6NWL79+8nOTmZmJgYDh48WOXYwoULcblcLFiwgMDAQHr37s2gQYP47LPPGDp0qEmJ/VN1dfJ4PEydOpW9e/cSHh5uTkABzl4nj8fDvHnzmDZtGnfddRcAQ4YMoXfv3qxcuVJNtzpU3Xtp8eLFeDwe/v3vf+NwOPB4PFx//fUsXbqURx991KTE/qm6Op1iGAaPPPIINputjtPJKdXVaffu3TRt2pTevXublE7g/N5LzzzzDA6Hg3vvvbeO08kp1dXpp3/0KSsr47PPPuOee+7B6XTWZUy/V12dPvzwQ4YNG8Yvf/lLAHr06MG6dev47LPP1HSrQ2er0YkTJ/jXv/7Fk08+yc033wxAQkICAwYM4K233mLWrFlmRfY769atY/v27Xz00Ue0bt0agNDQUKZPn05KSgpvvfWWX/Yg9HhpI7Z582aSk5O5//77Tzu2fv16rrvuOgIDAwGw2WwkJSWxfv36uo7p96qrU1FREW63m3/+858EBwebkE5OOVudLBYL8+fP5/bbb/eNuVwugoKC8Hg8dR3Tr1X3XoqPj+epp57C4XAAlZ950dHRuN3uuo7p96qr0yn/+Mc/2LdvH3fffXcdJpMfq65Ou3btIj4+3oRU8mPnei9t2LCB9957j9///vcEBQXVcTo55Xw+805ZtmwZFouFX/3qV3WQTH6sujrl5OScNlZWVqbGaB07W4127dqFx+OhT58+vrGAgAAuueQSDh8+XNcx/Vp8fDzLli3zNdwAmjZtCoDX6/XbHoRmujVit9xyC1arlY0bN5527MSJE1xxxRVVxlq0aMGaNWvqKJ2cUl2dQkJCePXVV01IJT91tjpZrVY6dOhQZWz37t1kZGTQvXv3uozo96p7L/10Rs7mzZvZunWrb3ai1J3q6gRw+PBhnnvuOZ566ik1RU1UXZ127txJWloa1157LdnZ2cTFxTFlyhSuvvpqE5L6r+pqVF5ezmOPPUZwcDDr169n7dq1XHfddfTv39+EpP7tXJ95pxiGweuvv864ceN8fyCSulNdnXr16sWCBQu44YYb6NSpE0uXLiU9PZ1hw4aZkNR/na1Gp2bF5+bm0rx5cwAqKio4cOAAffv2rfOc/iwkJKTKshMAX375JeHh4bRr185vexCa6daIWa1nL6/b7T7tDeF0Os/4lxy5uKqrk8ViqcMkUp3q6vRTc+bMITY2Vr/c1LHzqdGBAwcYP34848aNY8qUKfTr168OksmPnatOf/jDH+jXrx/XX399HSWSMzlbnQzDYMeOHYSGhvLggw8yb948wsLCmDBhAikpKXWc0r9V91565513SE1NxTAMjhw5wpYtW5gwYQLz5s2rw4QC5//vhy+//JLMzExGjBhxkRPJmVRXp/Hjx9O1a1fGjh1LQkICs2fP5tlnn9VaYXXsbDXq0qULLpeLZ599lsLCQioqKnj++efJyMhgwIABdZxSfuzo0aMsXbqUcePGYbPZ/LYHoZlufsrhcJy2Vo7D4dCsApH/0QcffMCaNWv429/+pvWo6qGwsDASExM5fPgw//73vxk+fLjvr6JivqVLl/Ldd9/x0UcfmR1FzsIwDF577TXatWvne2SxV69eDB48mKVLlzJjxgyTEwpUNt1CQkJ47733aN26NYZh8PDDDzN//nxGjx5NVFSU2RHlJ/7xj39www03EBoaanYU+YklS5awefNmJk6cSPv27Vm3bh2PPPIIkZGR9OrVy+x4fi8sLIyZM2fy6KOP0qtXLwICAiguLqZVq1Zce+21ZsfzW6fW542MjGT8+PGA//YgNNPNT0VGRnLs2LEqY7m5ub7nq0Wk5tLS0pg1axajRo3Sf+TrqYiICCZMmMD777+P1+vlxRdfNDuSnHT8+HGeeeYZZs6cqR1L6zGr1Urnzp2rrBFmt9vp0qULe/bsMTGZ/NiBAwcYOnSob10di8XCLbfcgtfr5bvvvjM5nfxUdnY2X3/9NTfccIPZUeQnKioqeOmll5gyZQqTJ09myJAhPPHEE9x00036N0Q9cvPNN/PFF18wa9YsfvGLXwAwadIkAgI0x8gsb7zxBhs2bODZZ5/1rU3urz0INd38VJcuXdiyZUuVsV27dtGsWTOTEok0bCUlJdx3333ExMTwyCOPmB1HfiIrK4uCggLf/w4KCiIxMVGPw9UjX3/9NQUFBUyaNIm4uDji4uJ46KGHOHz4MHFxccydO9fsiAIUFhaeccHj3NxcSktLTUgkZxIcHFxlIWuo3OQHKpukUr+sXLmSJk2a8POf/9zsKPITOTk55OXlcfnll1cZ79ChA2lpaSalkjNp1qwZN910EwcOHKB9+/Zac89EmzZt4rnnnmPy5MlcddVVvnF/7UGo6eanBg8ezBdffMH+/fsBSE9PZ/Xq1actNi4i5+bxeJg6dSpHjhxh7ty5vl9spP6YOHEiL7zwQpWxH374gZYtW5qUSH4qKSmJ5cuXV/maNGkS0dHRLF++nNGjR5sdUYCUlBTuvPPOKr9spqWlsXnzZrp27WpeMKniyiuvZPfu3VXGNmzYgN1up2PHjialkrNZtWoV/fr106yceig8PByLxcK2bduqjH/55ZdanqIe2rJlC//973958MEHa7Qes9SelJQU7rvvPvr163faLvT+2oPQJ7ufGjhwIB07dmTMmDH079+ftWvXEhkZyahRo8yOJtLgvPLKK6xZs4apU6eSn5/Pjh07gMqZBu3atTM5nQDccccdTJkyhZCQEPr06cOXX37Jtm3bWLx4sdnR5KTw8HDCw8OrjO3ZsweHw3HaDsFini5dunDllVcyYcIEbr31VsrKyli8eDFBQUHcfvvtZseTk37zm9+QnJzM888/T9++fdmzZw9z5sxh9OjRpy1iLeYqKytj8+bNPPTQQ2ZHkTOw2+3069ePv/71rxw6dIhmzZrx7bffsmnTJv70pz+ZHU9+4oUXXuDqq6/WrqUmKS8vZ9KkSQCMGzeOnTt3+o61atXKb3sQarr5qYCAAF5//XXmzZvHunXr6NmzJ9OnT6dJkyZmRxNpcD755BMAXnzxxSrre/To0YO33nrLpFTyY4MHD+bpp5/mb3/7G2+++Sbt27fn1VdfpXv37mZHE2lw5s6dy6xZs3juuedwOBz07duX6dOna9ZHPdKzZ09eeeUVFixYwNtvv01gYCAjR45k+vTpZkeTn/j2229xu91069bN7ChyFs8//zxz5sxhzZo1HDt2jKioKKZOncovf/lLs6PJj6xZs4atW7fy/vvvmx3Fb+3fv9+3dMupzRNOmT17NiNGjPDLHoTFMAzD7BAiIiIiIiIiIiKNiR50FhERERERERERqWVquomIiIiIiIiIiNQyNd1ERERERERERERqmZpuIiIiIiIiIiIitUxNNxERERERERERkVqmppuIiIiIiIiIiEgtU9NNRERERERERESklqnpJiIiIiIiIiIiUsvUdBMREREREREREallarqJiIiIiIiIiIjUsv8HEmdRNIc4gdQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 1500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "max_depth =range(10,21)\n",
    "plt.figure(figsize=(15,5),dpi=100)\n",
    "plt.plot(max_depth,result,c=\"#01a2d9\", label=\"rf\")\n",
    "print(\"RF最高分是{:.5f}，最高分对应的最大深度是{}\".format(max(result), max_depth[result.index(max(result))]))\n",
    "sns.set(style=\"whitegrid\" ,font=\"simhei\" , font_scale=1.1)\n",
    "plt.title(\"RF树数量学习曲线\",fontsize=18)\n",
    "plt.legend()\n",
    "plt.xticks(max_depth)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "935b1e7c",
   "metadata": {},
   "source": [
    "# 使用voting法则进行模型融合"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "id": "20e75652",
   "metadata": {},
   "outputs": [],
   "source": [
    "hard = pd.DataFrame([[\"RF\",1],[ \"GBDT\",1],[\"XGB\",0]],columns=[\"算法\", \"预测标签\"])#硬投票 \n",
    "soft = pd.DataFrame([[\"RF\",0.34,1-0.34],[\"GBDT\",0.6,0.4],[ \"XGB\",0.2,0.8]],columns=[\"算法\",0,1])#软投票"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "id": "22f7321f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>算法</th>\n",
       "      <th>预测标签</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>RF</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>GBDT</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>XGB</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     算法  预测标签\n",
       "0    RF     1\n",
       "1  GBDT     1\n",
       "2   XGB     0"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hard#少数服从多数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 111,
   "id": "9aa1bf13",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>算法</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>RF</td>\n",
       "      <td>0.34</td>\n",
       "      <td>0.66</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>GBDT</td>\n",
       "      <td>0.60</td>\n",
       "      <td>0.40</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>XGB</td>\n",
       "      <td>0.20</td>\n",
       "      <td>0.80</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     算法     0     1\n",
       "0    RF  0.34  0.66\n",
       "1  GBDT  0.60  0.40\n",
       "2   XGB  0.20  0.80"
      ]
     },
     "execution_count": 111,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "soft#对概率进行加和"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aeb55ba5",
   "metadata": {},
   "source": [
    "此处随机森林使用500以便训练"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "883b767c",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf = RFC(n_estimators=500,max_depth=13,random_state=1412,class_weight={0:0.5,1:2})\n",
    "gbdc = GBC(n_estimators=200,learning_rate=0.26166,random_state=1412)\n",
    "param = {\"objective\" : 'binary:logistic' , \"eval_metric\" : \"auc\" ,\"scale_pos_weight\" :0.03, \"eta\" : 0.24166}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "id": "c9c6e53b",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf=rf.fit(Xtrain, Ytrain)\n",
    "gbdc = gbdc.fit(Xtrain, Ytrain)\n",
    "xgbc = xgb.train(param,dtrain,num_boost_round=70)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 114,
   "id": "af9f16b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_prob_train = rf.predict_proba(Xtrain)#输出概率\n",
    "gbdc_prob_train = gbdc.predict_proba(Xtrain)\n",
    "xgb_prob_train = xgbc.predict(dtrain)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "id": "5ca8e723",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_auc_score,accuracy_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 119,
   "id": "3b86d854",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9634737832164892"
      ]
     },
     "execution_count": 119,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(Ytrain,rf_prob_train[:,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "id": "36a42863",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9447802490703763"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score( Ytrain,gbdc_prob_train[ :,1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "id": "7bb81a77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9438818842323282"
      ]
     },
     "execution_count": 123,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(Ytrain,xgb_prob_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "id": "6229ed03",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_train = pd.concat([pd.DataFrame(rf_prob_train,columns=[\"rf0\" , \"rf1\"])\n",
    "                        ,pd. DataFrame(gbdc_prob_train , columns=[\"gbc0\" , \"gbc1\"])\n",
    "                        ,pd. DataFrame(xgb_prob_train,columns=[\"xgb1\"])]\n",
    "                        ,axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "id": "b59639de",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rf0</th>\n",
       "      <th>rf1</th>\n",
       "      <th>gbc0</th>\n",
       "      <th>gbc1</th>\n",
       "      <th>xgb1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321689</td>\n",
       "      <td>0.678311</td>\n",
       "      <td>0.070768</td>\n",
       "      <td>0.929232</td>\n",
       "      <td>0.220651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.393673</td>\n",
       "      <td>0.606327</td>\n",
       "      <td>0.710138</td>\n",
       "      <td>0.289862</td>\n",
       "      <td>0.021795</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.849503</td>\n",
       "      <td>0.150497</td>\n",
       "      <td>0.990611</td>\n",
       "      <td>0.009389</td>\n",
       "      <td>0.001999</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.587916</td>\n",
       "      <td>0.412084</td>\n",
       "      <td>0.746832</td>\n",
       "      <td>0.253168</td>\n",
       "      <td>0.011923</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.753283</td>\n",
       "      <td>0.246717</td>\n",
       "      <td>0.804700</td>\n",
       "      <td>0.195300</td>\n",
       "      <td>0.009331</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        rf0       rf1      gbc0      gbc1      xgb1\n",
       "0  0.321689  0.678311  0.070768  0.929232  0.220651\n",
       "1  0.393673  0.606327  0.710138  0.289862  0.021795\n",
       "2  0.849503  0.150497  0.990611  0.009389  0.001999\n",
       "3  0.587916  0.412084  0.746832  0.253168  0.011923\n",
       "4  0.753283  0.246717  0.804700  0.195300  0.009331"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prob_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "id": "133b236e",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_train[ \"xgb0\"] =1 - prob_train[ \"xgb1\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "id": "d140bc58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rf0</th>\n",
       "      <th>rf1</th>\n",
       "      <th>gbc0</th>\n",
       "      <th>gbc1</th>\n",
       "      <th>xgb1</th>\n",
       "      <th>xgb0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321689</td>\n",
       "      <td>0.678311</td>\n",
       "      <td>0.070768</td>\n",
       "      <td>0.929232</td>\n",
       "      <td>0.220651</td>\n",
       "      <td>0.779348</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.393673</td>\n",
       "      <td>0.606327</td>\n",
       "      <td>0.710138</td>\n",
       "      <td>0.289862</td>\n",
       "      <td>0.021795</td>\n",
       "      <td>0.978205</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.849503</td>\n",
       "      <td>0.150497</td>\n",
       "      <td>0.990611</td>\n",
       "      <td>0.009389</td>\n",
       "      <td>0.001999</td>\n",
       "      <td>0.998001</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.587916</td>\n",
       "      <td>0.412084</td>\n",
       "      <td>0.746832</td>\n",
       "      <td>0.253168</td>\n",
       "      <td>0.011923</td>\n",
       "      <td>0.988077</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.753283</td>\n",
       "      <td>0.246717</td>\n",
       "      <td>0.804700</td>\n",
       "      <td>0.195300</td>\n",
       "      <td>0.009331</td>\n",
       "      <td>0.990669</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        rf0       rf1      gbc0      gbc1      xgb1      xgb0\n",
       "0  0.321689  0.678311  0.070768  0.929232  0.220651  0.779348\n",
       "1  0.393673  0.606327  0.710138  0.289862  0.021795  0.978205\n",
       "2  0.849503  0.150497  0.990611  0.009389  0.001999  0.998001\n",
       "3  0.587916  0.412084  0.746832  0.253168  0.011923  0.988077\n",
       "4  0.753283  0.246717  0.804700  0.195300  0.009331  0.990669"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prob_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "id": "8862496b",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_train[\"0\"]= 4*prob_train[\"rf0\"]+0.8*prob_train[\"gbc0\"]+0.2*prob_train[\"xgb0\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "id": "0617c4c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_train[\"1\"]= 4*prob_train[\"rf1\"]+0.8*prob_train[\"gbc1\"]+0.2*prob_train[\"xgb1\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "id": "f76ea18e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rf0</th>\n",
       "      <th>rf1</th>\n",
       "      <th>gbc0</th>\n",
       "      <th>gbc1</th>\n",
       "      <th>xgb1</th>\n",
       "      <th>xgb0</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321689</td>\n",
       "      <td>0.678311</td>\n",
       "      <td>0.070768</td>\n",
       "      <td>0.929232</td>\n",
       "      <td>0.220651</td>\n",
       "      <td>0.779348</td>\n",
       "      <td>1.499242</td>\n",
       "      <td>3.500758</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.393673</td>\n",
       "      <td>0.606327</td>\n",
       "      <td>0.710138</td>\n",
       "      <td>0.289862</td>\n",
       "      <td>0.021795</td>\n",
       "      <td>0.978205</td>\n",
       "      <td>2.338443</td>\n",
       "      <td>2.661557</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.849503</td>\n",
       "      <td>0.150497</td>\n",
       "      <td>0.990611</td>\n",
       "      <td>0.009389</td>\n",
       "      <td>0.001999</td>\n",
       "      <td>0.998001</td>\n",
       "      <td>4.390100</td>\n",
       "      <td>0.609900</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.587916</td>\n",
       "      <td>0.412084</td>\n",
       "      <td>0.746832</td>\n",
       "      <td>0.253168</td>\n",
       "      <td>0.011923</td>\n",
       "      <td>0.988077</td>\n",
       "      <td>3.146746</td>\n",
       "      <td>1.853254</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.753283</td>\n",
       "      <td>0.246717</td>\n",
       "      <td>0.804700</td>\n",
       "      <td>0.195300</td>\n",
       "      <td>0.009331</td>\n",
       "      <td>0.990669</td>\n",
       "      <td>3.855026</td>\n",
       "      <td>1.144974</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        rf0       rf1      gbc0      gbc1      xgb1      xgb0         0  \\\n",
       "0  0.321689  0.678311  0.070768  0.929232  0.220651  0.779348  1.499242   \n",
       "1  0.393673  0.606327  0.710138  0.289862  0.021795  0.978205  2.338443   \n",
       "2  0.849503  0.150497  0.990611  0.009389  0.001999  0.998001  4.390100   \n",
       "3  0.587916  0.412084  0.746832  0.253168  0.011923  0.988077  3.146746   \n",
       "4  0.753283  0.246717  0.804700  0.195300  0.009331  0.990669  3.855026   \n",
       "\n",
       "          1  \n",
       "0  3.500758  \n",
       "1  2.661557  \n",
       "2  0.609900  \n",
       "3  1.853254  \n",
       "4  1.144974  "
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prob_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "id": "db057b95",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_train[\"adjusted1\"] = prob_train[\"1\"]/(prob_train[\"0\"] + prob_train[\"1\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "id": "baae19b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rf0</th>\n",
       "      <th>rf1</th>\n",
       "      <th>gbc0</th>\n",
       "      <th>gbc1</th>\n",
       "      <th>xgb1</th>\n",
       "      <th>xgb0</th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>adjusted1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.321689</td>\n",
       "      <td>0.678311</td>\n",
       "      <td>0.070768</td>\n",
       "      <td>0.929232</td>\n",
       "      <td>0.220651</td>\n",
       "      <td>0.779348</td>\n",
       "      <td>1.499242</td>\n",
       "      <td>3.500758</td>\n",
       "      <td>0.700152</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.393673</td>\n",
       "      <td>0.606327</td>\n",
       "      <td>0.710138</td>\n",
       "      <td>0.289862</td>\n",
       "      <td>0.021795</td>\n",
       "      <td>0.978205</td>\n",
       "      <td>2.338443</td>\n",
       "      <td>2.661557</td>\n",
       "      <td>0.532311</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.849503</td>\n",
       "      <td>0.150497</td>\n",
       "      <td>0.990611</td>\n",
       "      <td>0.009389</td>\n",
       "      <td>0.001999</td>\n",
       "      <td>0.998001</td>\n",
       "      <td>4.390100</td>\n",
       "      <td>0.609900</td>\n",
       "      <td>0.121980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.587916</td>\n",
       "      <td>0.412084</td>\n",
       "      <td>0.746832</td>\n",
       "      <td>0.253168</td>\n",
       "      <td>0.011923</td>\n",
       "      <td>0.988077</td>\n",
       "      <td>3.146746</td>\n",
       "      <td>1.853254</td>\n",
       "      <td>0.370651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.753283</td>\n",
       "      <td>0.246717</td>\n",
       "      <td>0.804700</td>\n",
       "      <td>0.195300</td>\n",
       "      <td>0.009331</td>\n",
       "      <td>0.990669</td>\n",
       "      <td>3.855026</td>\n",
       "      <td>1.144974</td>\n",
       "      <td>0.228995</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        rf0       rf1      gbc0      gbc1      xgb1      xgb0         0  \\\n",
       "0  0.321689  0.678311  0.070768  0.929232  0.220651  0.779348  1.499242   \n",
       "1  0.393673  0.606327  0.710138  0.289862  0.021795  0.978205  2.338443   \n",
       "2  0.849503  0.150497  0.990611  0.009389  0.001999  0.998001  4.390100   \n",
       "3  0.587916  0.412084  0.746832  0.253168  0.011923  0.988077  3.146746   \n",
       "4  0.753283  0.246717  0.804700  0.195300  0.009331  0.990669  3.855026   \n",
       "\n",
       "          1  adjusted1  \n",
       "0  3.500758   0.700152  \n",
       "1  2.661557   0.532311  \n",
       "2  0.609900   0.121980  \n",
       "3  1.853254   0.370651  \n",
       "4  1.144974   0.228995  "
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prob_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "38479c57",
   "metadata": {},
   "source": [
    "#### 计算AUC"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "id": "ce4d7dcc",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9612399980782222"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(Ytrain,prob_train[\"adjusted1\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "id": "44227876",
   "metadata": {},
   "outputs": [],
   "source": [
    "Ytrain_pred = ((prob_train[ \"adjusted1\"]) > 0.5).astype(\"int\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 151,
   "id": "9f81fb58",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8896133582966865"
      ]
     },
     "execution_count": 151,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(Ytrain , Ytrain_pred)#准确率"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 152,
   "id": "b115a58b",
   "metadata": {},
   "outputs": [],
   "source": [
    "Ytrain_pred = ((prob_train[ \"adjusted1\"]) > 0.7).astype(\"int\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 153,
   "id": "4a1635c1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9037096703966561"
      ]
     },
     "execution_count": 153,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(Ytrain , Ytrain_pred)#准确率"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f45e461d",
   "metadata": {},
   "source": [
    "## 开始测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "3c089ba9",
   "metadata": {},
   "outputs": [],
   "source": [
    "rf_prob_test = rf.predict_proba(Xtest)\n",
    "gbdc_prob_test = gbdc.predict_proba(Xtest)\n",
    "xgb_prob_test = xgbc. predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "id": "278ca61d",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_test = pd.concat([pd.DataFrame(rf_prob_test,columns=[\"rf0\" , \"rf1\"])\n",
    "                        ,pd. DataFrame(gbdc_prob_test , columns=[\"gbc0\" , \"gbc1\"])\n",
    "                        ,pd. DataFrame(xgb_prob_test,columns=[\"xgb1\"])]\n",
    "                        ,axis=1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "id": "cd5ef6d9",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_test[ \"xgb0\"] =1 - prob_test[ \"xgb1\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "id": "20adad01",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>rf0</th>\n",
       "      <th>rf1</th>\n",
       "      <th>gbc0</th>\n",
       "      <th>gbc1</th>\n",
       "      <th>xgb1</th>\n",
       "      <th>xgb0</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.658342</td>\n",
       "      <td>0.341658</td>\n",
       "      <td>0.948855</td>\n",
       "      <td>0.051145</td>\n",
       "      <td>0.005705</td>\n",
       "      <td>0.994295</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.574240</td>\n",
       "      <td>0.425760</td>\n",
       "      <td>0.756218</td>\n",
       "      <td>0.243782</td>\n",
       "      <td>0.013066</td>\n",
       "      <td>0.986934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.425748</td>\n",
       "      <td>0.574252</td>\n",
       "      <td>0.464766</td>\n",
       "      <td>0.535234</td>\n",
       "      <td>0.031720</td>\n",
       "      <td>0.968280</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.781815</td>\n",
       "      <td>0.218185</td>\n",
       "      <td>0.993110</td>\n",
       "      <td>0.006890</td>\n",
       "      <td>0.003191</td>\n",
       "      <td>0.996809</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.881968</td>\n",
       "      <td>0.118032</td>\n",
       "      <td>0.820506</td>\n",
       "      <td>0.179494</td>\n",
       "      <td>0.001596</td>\n",
       "      <td>0.998404</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        rf0       rf1      gbc0      gbc1      xgb1      xgb0\n",
       "0  0.658342  0.341658  0.948855  0.051145  0.005705  0.994295\n",
       "1  0.574240  0.425760  0.756218  0.243782  0.013066  0.986934\n",
       "2  0.425748  0.574252  0.464766  0.535234  0.031720  0.968280\n",
       "3  0.781815  0.218185  0.993110  0.006890  0.003191  0.996809\n",
       "4  0.881968  0.118032  0.820506  0.179494  0.001596  0.998404"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prob_test.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "id": "e0d71e16",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_test[\"0\"]= 4*prob_test[\"rf0\"]+0.8*prob_test[\"gbc0\"]+0.2*prob_test[\"xgb0\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "id": "a716dedf",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_test[\"1\"]= 4*prob_test[\"rf1\"]+0.8*prob_test[\"gbc1\"]+0.2*prob_test[\"xgb1\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "id": "19c9cee6",
   "metadata": {},
   "outputs": [],
   "source": [
    "prob_test[\"adjusted1\"] = prob_test[\"1\"]/(prob_test[\"0\"] + prob_test[\"1\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "id": "41e97876",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.81693669054251"
      ]
     },
     "execution_count": 173,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(Ytest,prob_test[\"adjusted1\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "id": "4e0ce417",
   "metadata": {},
   "outputs": [],
   "source": [
    "Ytest_pred = ((prob_test[ \"adjusted1\"]) > 0.7).astype(\"int\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "id": "397c790b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8152433145582788"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "accuracy_score(Ytest , Ytest_pred)#准确率"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d266fca9",
   "metadata": {},
   "source": [
    "增加新的聚合特征\n",
    "更加细致的调参\n",
    "更多的模型进行投票"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
